aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--executor/common_kvm_ppc64.h77
-rw-r--r--executor/common_linux.h2
-rw-r--r--executor/test.h4
-rw-r--r--executor/test_linux.h8
-rw-r--r--pkg/compiler/types.go4
-rw-r--r--pkg/csource/gen.go1
-rw-r--r--pkg/csource/generated.go138
-rw-r--r--pkg/host/syscalls_linux.go4
-rw-r--r--pkg/ifuzz/ifuzz.go3
-rw-r--r--pkg/ifuzz/ifuzz_test.go3
-rwxr-xr-xpkg/ifuzz/powerpc/gen/powerisa30_to_syz356
-rw-r--r--pkg/ifuzz/powerpc/generated/empty.go6
-rw-r--r--pkg/ifuzz/powerpc/generated/insns.go1181
-rw-r--r--pkg/ifuzz/powerpc/powerpc.go165
-rw-r--r--pkg/ifuzz/powerpc/pseudo.go108
-rw-r--r--prog/rand.go9
-rw-r--r--prog/types.go1
-rw-r--r--sys/linux/dev_kvm.txt18
18 files changed, 2083 insertions, 5 deletions
diff --git a/executor/common_kvm_ppc64.h b/executor/common_kvm_ppc64.h
new file mode 100644
index 000000000..f03ce42df
--- /dev/null
+++ b/executor/common_kvm_ppc64.h
@@ -0,0 +1,77 @@
+// Copyright 2020 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+// This file is shared between executor and csource package.
+
+// Implementation of syz_kvm_setup_cpu pseudo-syscall.
+// See Intel Software Developer’s Manual Volume 3: System Programming Guide
+// for details on what happens here.
+
+#include "kvm.h"
+
+struct kvm_text {
+ uintptr_t typ;
+ const void* text;
+ uintptr_t size;
+};
+
+// syz_kvm_setup_cpu(fd fd_kvmvm, cpufd fd_kvmcpu, usermem vma[24], text ptr[in, array[kvm_text, 1]], ntext len[text], flags flags[kvm_setup_flags], opts ptr[in, array[kvm_setup_opt, 0:2]], nopt len[opts])
+static long syz_kvm_setup_cpu(volatile long a0, volatile long a1, volatile long a2, volatile long a3, volatile long a4, volatile long a5, volatile long a6, volatile long a7)
+{
+ const int vmfd = a0;
+ const int cpufd = a1;
+ char* const host_mem = (char*)a2;
+ const struct kvm_text* const text_array_ptr = (struct kvm_text*)a3;
+ const uintptr_t text_count = a4;
+
+ const uintptr_t page_size = 16 << 10;
+ const uintptr_t guest_mem_size = 256 << 20;
+ const uintptr_t guest_mem = 0;
+
+ (void)text_count; // fuzzer can spoof count and we need just 1 text, so ignore text_count
+ const void* text = 0;
+ uintptr_t text_size = 0;
+ NONFAILING(text = text_array_ptr[0].text);
+ NONFAILING(text_size = text_array_ptr[0].size);
+
+ for (uintptr_t i = 0; i < guest_mem_size / page_size; i++) {
+ struct kvm_userspace_memory_region memreg;
+ memreg.slot = i;
+ memreg.flags = 0; // can be KVM_MEM_LOG_DIRTY_PAGES | KVM_MEM_READONLY
+ memreg.guest_phys_addr = guest_mem + i * page_size;
+ memreg.memory_size = page_size;
+ memreg.userspace_addr = (uintptr_t)host_mem + i * page_size;
+ ioctl(vmfd, KVM_SET_USER_MEMORY_REGION, &memreg);
+ }
+
+ struct kvm_regs regs;
+ struct kvm_sregs sregs;
+ if (ioctl(cpufd, KVM_GET_SREGS, &sregs))
+ return -1;
+ if (ioctl(cpufd, KVM_GET_REGS, &regs))
+ return -1;
+
+ // PPC64LE, real mode: MSR_LE | MSR_SF
+ regs.msr = 1ULL | (1ULL << 63);
+
+ memcpy(host_mem, text, text_size);
+
+ if (ioctl(cpufd, KVM_SET_SREGS, &sregs))
+ return -1;
+ if (ioctl(cpufd, KVM_SET_REGS, &regs))
+ return -1;
+
+ // Hypercalls need to be enable so we enable them all here to
+ // allow fuzzing
+#define MAX_HCALL 0x450
+ for (unsigned hcall = 4; hcall < MAX_HCALL; hcall += 4) {
+ struct kvm_enable_cap cap = {
+ .cap = KVM_CAP_PPC_ENABLE_HCALL,
+ .flags = 0,
+ .args = {hcall, 1},
+ };
+ ioctl(vmfd, KVM_ENABLE_CAP, &cap);
+ }
+
+ return 0;
+}
diff --git a/executor/common_linux.h b/executor/common_linux.h
index acb3acde7..16b78e99a 100644
--- a/executor/common_linux.h
+++ b/executor/common_linux.h
@@ -2905,6 +2905,8 @@ error_clear_loop:
#include "common_kvm_amd64.h"
#elif GOARCH_arm64
#include "common_kvm_arm64.h"
+#elif GOARCH_ppc64 || GOARCH_ppc64le
+#include "common_kvm_ppc64.h"
#elif !GOARCH_arm
static long syz_kvm_setup_cpu(volatile long a0, volatile long a1, volatile long a2, volatile long a3, volatile long a4, volatile long a5, volatile long a6, volatile long a7)
{
diff --git a/executor/test.h b/executor/test.h
index bd30fb372..37d03b65a 100644
--- a/executor/test.h
+++ b/executor/test.h
@@ -1,7 +1,7 @@
// Copyright 2017 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
-#if GOOS_linux && GOARCH_amd64
+#if GOOS_linux && (GOARCH_amd64 | GOARCH_ppc64 | GOARCH_ppc64le)
#include "test_linux.h"
#endif
@@ -208,7 +208,7 @@ static struct {
{"test_copyin", test_copyin},
{"test_csum_inet", test_csum_inet},
{"test_csum_inet_acc", test_csum_inet_acc},
-#if GOOS_linux && GOARCH_amd64
+#if GOOS_linux && (GOARCH_amd64 || GOARCH_ppc64 || GOARCH_ppc64le)
{"test_kvm", test_kvm},
#endif
};
diff --git a/executor/test_linux.h b/executor/test_linux.h
index fcd8d855e..428fba967 100644
--- a/executor/test_linux.h
+++ b/executor/test_linux.h
@@ -75,11 +75,13 @@ static int test_one(int text_type, const char* text, int text_size, int flags, u
dump_cpu_state(cpufd, (char*)vm_mem);
return 1;
}
+#ifdef GOARCH_amd64
if (check_rax && regs.rax != 0xbadc0de) {
printf("wrong result: rax=0x%llx\n", (long long)regs.rax);
dump_cpu_state(cpufd, (char*)vm_mem);
return 1;
}
+#endif
munmap(vm_mem, vm_mem_size);
munmap(cpu_mem, cpu_mem_size);
close(cpufd);
@@ -108,6 +110,7 @@ static int test_kvm()
const char text8[] = "\x66\xb8\xde\xc0\xad\x0b";
if ((res = test_one(8, text8, sizeof(text8) - 1, 0, KVM_EXIT_HLT, true)))
return res;
+#ifdef GOARCH_amd64
if ((res = test_one(8, text8, sizeof(text8) - 1, KVM_SETUP_VIRT86, KVM_EXIT_SHUTDOWN, true)))
return res;
if ((res = test_one(8, text8, sizeof(text8) - 1, KVM_SETUP_VIRT86 | KVM_SETUP_PAGING, KVM_EXIT_SHUTDOWN, true)))
@@ -161,6 +164,7 @@ static int test_kvm()
if ((res = test_one(32, text_rsm, sizeof(text_rsm) - 1, KVM_SETUP_SMM, KVM_EXIT_HLT, false)))
return res;
}
+#endif
return 0;
}
@@ -179,14 +183,17 @@ static unsigned host_kernel_version()
return major * 100 + minor;
}
+#ifdef GOARCH_amd64
static void dump_seg(const char* name, struct kvm_segment* seg)
{
printf("%s: base=0x%llx limit=0x%x sel=0x%x type=%d p=%d dpl=%d, db=%d s=%d l=%d g=%d\n",
name, seg->base, seg->limit, seg->selector, seg->type, seg->present, seg->dpl, seg->db, seg->s, seg->l, seg->g);
}
+#endif
static void dump_cpu_state(int cpufd, char* vm_mem)
{
+#ifdef GOARCH_amd64
struct kvm_sregs sregs;
if (ioctl(cpufd, KVM_GET_SREGS, &sregs)) {
printf("KVM_GET_SREGS failed (%d)\n", errno);
@@ -219,4 +226,5 @@ static void dump_cpu_state(int cpufd, char* vm_mem)
((long long*)vm_mem)[i], ((long long*)vm_mem)[i + 1], ((long long*)vm_mem)[i + 2], ((long long*)vm_mem)[i + 3]);
}
}
+#endif
}
diff --git a/pkg/compiler/types.go b/pkg/compiler/types.go
index 3c22038f8..b2c8c3204 100644
--- a/pkg/compiler/types.go
+++ b/pkg/compiler/types.go
@@ -548,7 +548,7 @@ var typeText = &typeDesc{
var typeArgTextType = &typeArg{
Kind: kindIdent,
- Names: []string{"target", "x86_real", "x86_16", "x86_32", "x86_64", "arm64"},
+ Names: []string{"target", "x86_real", "x86_16", "x86_32", "x86_64", "arm64", "ppc64"},
}
func genTextType(t *ast.Type) prog.TextKind {
@@ -565,6 +565,8 @@ func genTextType(t *ast.Type) prog.TextKind {
return prog.TextX86bit64
case "arm64":
return prog.TextArm64
+ case "ppc64":
+ return prog.TextPpc64
default:
panic(fmt.Sprintf("unknown text type %q", t.Ident))
}
diff --git a/pkg/csource/gen.go b/pkg/csource/gen.go
index efdf6bb82..53b34bbc2 100644
--- a/pkg/csource/gen.go
+++ b/pkg/csource/gen.go
@@ -32,6 +32,7 @@ func main() {
"common_test.h",
"common_kvm_amd64.h",
"common_kvm_arm64.h",
+ "common_kvm_ppc64.h",
"common_usb_linux.h",
"common_usb_netbsd.h",
"common_usb.h",
diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go
index 75f228a7f..5e234d47a 100644
--- a/pkg/csource/generated.go
+++ b/pkg/csource/generated.go
@@ -7180,6 +7180,144 @@ static long syz_kvm_setup_cpu(volatile long a0, volatile long a1, volatile long
return 0;
}
+#elif GOARCH_ppc64 || GOARCH_ppc64le
+
+#define ADDR_TEXT 0x0000
+#define ADDR_GDT 0x1000
+#define ADDR_LDT 0x1800
+#define ADDR_PML4 0x2000
+#define ADDR_PDP 0x3000
+#define ADDR_PD 0x4000
+#define ADDR_STACK0 0x0f80
+#define ADDR_VAR_HLT 0x2800
+#define ADDR_VAR_SYSRET 0x2808
+#define ADDR_VAR_SYSEXIT 0x2810
+#define ADDR_VAR_IDT 0x3800
+#define ADDR_VAR_TSS64 0x3a00
+#define ADDR_VAR_TSS64_CPL3 0x3c00
+#define ADDR_VAR_TSS16 0x3d00
+#define ADDR_VAR_TSS16_2 0x3e00
+#define ADDR_VAR_TSS16_CPL3 0x3f00
+#define ADDR_VAR_TSS32 0x4800
+#define ADDR_VAR_TSS32_2 0x4a00
+#define ADDR_VAR_TSS32_CPL3 0x4c00
+#define ADDR_VAR_TSS32_VM86 0x4e00
+#define ADDR_VAR_VMXON_PTR 0x5f00
+#define ADDR_VAR_VMCS_PTR 0x5f08
+#define ADDR_VAR_VMEXIT_PTR 0x5f10
+#define ADDR_VAR_VMWRITE_FLD 0x5f18
+#define ADDR_VAR_VMWRITE_VAL 0x5f20
+#define ADDR_VAR_VMXON 0x6000
+#define ADDR_VAR_VMCS 0x7000
+#define ADDR_VAR_VMEXIT_CODE 0x9000
+#define ADDR_VAR_USER_CODE 0x9100
+#define ADDR_VAR_USER_CODE2 0x9120
+
+#define SEL_LDT (1 << 3)
+#define SEL_CS16 (2 << 3)
+#define SEL_DS16 (3 << 3)
+#define SEL_CS16_CPL3 ((4 << 3) + 3)
+#define SEL_DS16_CPL3 ((5 << 3) + 3)
+#define SEL_CS32 (6 << 3)
+#define SEL_DS32 (7 << 3)
+#define SEL_CS32_CPL3 ((8 << 3) + 3)
+#define SEL_DS32_CPL3 ((9 << 3) + 3)
+#define SEL_CS64 (10 << 3)
+#define SEL_DS64 (11 << 3)
+#define SEL_CS64_CPL3 ((12 << 3) + 3)
+#define SEL_DS64_CPL3 ((13 << 3) + 3)
+#define SEL_CGATE16 (14 << 3)
+#define SEL_TGATE16 (15 << 3)
+#define SEL_CGATE32 (16 << 3)
+#define SEL_TGATE32 (17 << 3)
+#define SEL_CGATE64 (18 << 3)
+#define SEL_CGATE64_HI (19 << 3)
+#define SEL_TSS16 (20 << 3)
+#define SEL_TSS16_2 (21 << 3)
+#define SEL_TSS16_CPL3 ((22 << 3) + 3)
+#define SEL_TSS32 (23 << 3)
+#define SEL_TSS32_2 (24 << 3)
+#define SEL_TSS32_CPL3 ((25 << 3) + 3)
+#define SEL_TSS32_VM86 (26 << 3)
+#define SEL_TSS64 (27 << 3)
+#define SEL_TSS64_HI (28 << 3)
+#define SEL_TSS64_CPL3 ((29 << 3) + 3)
+#define SEL_TSS64_CPL3_HI (30 << 3)
+
+#define MSR_IA32_FEATURE_CONTROL 0x3a
+#define MSR_IA32_VMX_BASIC 0x480
+#define MSR_IA32_SMBASE 0x9e
+#define MSR_IA32_SYSENTER_CS 0x174
+#define MSR_IA32_SYSENTER_ESP 0x175
+#define MSR_IA32_SYSENTER_EIP 0x176
+#define MSR_IA32_STAR 0xC0000081
+#define MSR_IA32_LSTAR 0xC0000082
+#define MSR_IA32_VMX_PROCBASED_CTLS2 0x48B
+
+#define NEXT_INSN $0xbadc0de
+#define PREFIX_SIZE 0xba1d
+
+
+struct kvm_text {
+ uintptr_t typ;
+ const void* text;
+ uintptr_t size;
+};
+static long syz_kvm_setup_cpu(volatile long a0, volatile long a1, volatile long a2, volatile long a3, volatile long a4, volatile long a5, volatile long a6, volatile long a7)
+{
+ const int vmfd = a0;
+ const int cpufd = a1;
+ char* const host_mem = (char*)a2;
+ const struct kvm_text* const text_array_ptr = (struct kvm_text*)a3;
+ const uintptr_t text_count = a4;
+
+ const uintptr_t page_size = 16 << 10;
+ const uintptr_t guest_mem_size = 256 << 20;
+ const uintptr_t guest_mem = 0;
+
+ (void)text_count;
+ const void* text = 0;
+ uintptr_t text_size = 0;
+ NONFAILING(text = text_array_ptr[0].text);
+ NONFAILING(text_size = text_array_ptr[0].size);
+
+ for (uintptr_t i = 0; i < guest_mem_size / page_size; i++) {
+ struct kvm_userspace_memory_region memreg;
+ memreg.slot = i;
+ memreg.flags = 0;
+ memreg.guest_phys_addr = guest_mem + i * page_size;
+ memreg.memory_size = page_size;
+ memreg.userspace_addr = (uintptr_t)host_mem + i * page_size;
+ ioctl(vmfd, KVM_SET_USER_MEMORY_REGION, &memreg);
+ }
+
+ struct kvm_regs regs;
+ struct kvm_sregs sregs;
+ if (ioctl(cpufd, KVM_GET_SREGS, &sregs))
+ return -1;
+ if (ioctl(cpufd, KVM_GET_REGS, &regs))
+ return -1;
+ regs.msr = 1ULL | (1ULL << 63);
+
+ memcpy(host_mem, text, text_size);
+
+ if (ioctl(cpufd, KVM_SET_SREGS, &sregs))
+ return -1;
+ if (ioctl(cpufd, KVM_SET_REGS, &regs))
+ return -1;
+#define MAX_HCALL 0x450
+ for (unsigned hcall = 4; hcall < MAX_HCALL; hcall += 4) {
+ struct kvm_enable_cap cap = {
+ .cap = KVM_CAP_PPC_ENABLE_HCALL,
+ .flags = 0,
+ .args = {hcall, 1},
+ };
+ ioctl(vmfd, KVM_ENABLE_CAP, &cap);
+ }
+
+ return 0;
+}
+
#elif !GOARCH_arm
static long syz_kvm_setup_cpu(volatile long a0, volatile long a1, volatile long a2, volatile long a3, volatile long a4, volatile long a5, volatile long a6, volatile long a7)
{
diff --git a/pkg/host/syscalls_linux.go b/pkg/host/syscalls_linux.go
index 16cfbfa46..cb7950440 100644
--- a/pkg/host/syscalls_linux.go
+++ b/pkg/host/syscalls_linux.go
@@ -199,6 +199,10 @@ func isSyzKvmSetupCPUSupported(c *prog.Syscall, target *prog.Target, sandbox str
if runtime.GOARCH == targets.ARM64 {
return true, ""
}
+ case "syz_kvm_setup_cpu$ppc64":
+ if runtime.GOARCH == "ppc64le" || runtime.GOARCH == "ppc64" {
+ return true, ""
+ }
}
return false, "unsupported arch"
}
diff --git a/pkg/ifuzz/ifuzz.go b/pkg/ifuzz/ifuzz.go
index 1939f440e..4b51b30f3 100644
--- a/pkg/ifuzz/ifuzz.go
+++ b/pkg/ifuzz/ifuzz.go
@@ -53,7 +53,8 @@ type InsnSet interface {
}
const (
- ArchX86 = "x86"
+ ArchX86 = "x86"
+ ArchPowerPC = "powerpc"
)
var SpecialNumbers = [...]uint64{0, 1 << 15, 1 << 16, 1 << 31, 1 << 32, 1 << 47, 1 << 47, 1 << 63}
diff --git a/pkg/ifuzz/ifuzz_test.go b/pkg/ifuzz/ifuzz_test.go
index a5052e581..173c7aec6 100644
--- a/pkg/ifuzz/ifuzz_test.go
+++ b/pkg/ifuzz/ifuzz_test.go
@@ -12,6 +12,7 @@ import (
"github.com/google/syzkaller/pkg/ifuzz"
"github.com/google/syzkaller/pkg/ifuzz/ifuzzimpl"
+ _ "github.com/google/syzkaller/pkg/ifuzz/powerpc/generated"
_ "github.com/google/syzkaller/pkg/ifuzz/x86/generated"
)
@@ -39,6 +40,7 @@ func testmodearch(t *testing.T, arch string) {
func TestMode(t *testing.T) {
testmodearch(t, ifuzz.ArchX86)
+ testmodearch(t, ifuzz.ArchPowerPC)
}
func testdecodearch(t *testing.T, arch string) {
@@ -118,4 +120,5 @@ func testdecodearch(t *testing.T, arch string) {
func TestDecode(t *testing.T) {
testdecodearch(t, ifuzz.ArchX86)
+ testdecodearch(t, ifuzz.ArchPowerPC)
}
diff --git a/pkg/ifuzz/powerpc/gen/powerisa30_to_syz b/pkg/ifuzz/powerpc/gen/powerisa30_to_syz
new file mode 100755
index 000000000..7f675c143
--- /dev/null
+++ b/pkg/ifuzz/powerpc/gen/powerisa30_to_syz
@@ -0,0 +1,356 @@
+#! /usr/bin/env python3
+
+# Copyright 2020 syzkaller project authors. All rights reserved.
+# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+import re
+import sys
+import pprint
+import subprocess
+
+
+def add_stat(m, s):
+ if s in m:
+ m[s] += 1
+ else:
+ m[s] = 1
+
+def add_fmt_ins(m, fmt, ins):
+ if fmt in m:
+ m[fmt] += [ins]
+ else:
+ m[fmt] = [ins]
+
+pagecache = {}
+
+pdf2txt = "/home/aik/powerisa/xpdf-4.02/build/xpdf/pdftotext"
+isa_pdf = sys.argv[1]
+isa_pagenum_correction = {
+ 'vadduqm': 3,
+ 'rldicl[.]': -1,
+ 'dcbtst': -1,
+ 'dcbf': -1,
+ 'dcbz': -1,
+ 'fmsubs[.]': -1,
+ 'fmsub[.]': -1,
+ 'rldicr[.]': -2,
+ 'rldcl[.]': 1,
+ 'rldcr[.]': 2
+ }
+
+def myint(s):
+ try:
+ return int(s)
+ except:
+ return None
+
+f = open("outp", 'w+')
+
+def read_pdf_page(pnum, store = False):
+ global pagecache
+
+ pagenum = str(pnum)
+ if pagenum in pagecache:
+ return pagecache[pagenum]
+
+ tmp = subprocess.check_output([pdf2txt, '-enc', "Latin1", "-f", pagenum, "-l", pagenum, "-nopgbrk", "-nodiag",
+ "-table",
+ isa_pdf, "-"])
+ tmp = tmp.decode("Latin1").split("\n")
+ ret = []
+
+ for t in range(len(tmp)):
+ if tmp[t] == "":
+ continue
+ ret += [tmp[t]]
+
+ if store:
+ off = 0
+ for t in range(len(tmp)):
+ t2 = re.match(r"\b0\b\s+[\d\s]+?\b31\b", tmp[t])
+ if t2:
+ if t2.start() == 0:
+ off = t2.end() + 2
+ break
+ off = t2.start()
+ break
+ for t in range(len(tmp)):
+ t2 = re.search(r"\b0\b\s+[\d\s]+?\b31\b", tmp[t][30:])
+ if t2:
+ off = max(off, t2.span()[0] + 30)
+ break
+ if not off:
+ print("!!! No idea how to split {}".format(pagenum))
+ sys.exit(-1)
+
+ f.write("===== page {}\n".format(pagenum))
+ ret2 = []
+ for c in ret[1:-1]:
+ t = c[:off].strip()
+ if not t:
+ continue
+ t = re.sub(r'\s+', ' ', t)
+ ret2 += [t]
+ f.write(t + "\n")
+ for c in ret[1:-1]:
+ t = c[off:].strip()
+ if not t:
+ continue
+ t = re.sub(r'\s+', ' ', t)
+ ret2 += [t]
+ f.write(t + "\n")
+ ret = ret2
+
+ pagecache[pagenum] = ret
+ return ret
+
+def find_pdf_pagenumber_offset():
+ opcodes_first_page = None
+ opcodes_last_page = None
+ for i in range(15, 100):
+ tmp = read_pdf_page(i)
+ if not tmp:
+ continue
+
+ print("Reading page {}: '{}'".format(i, tmp[-1]), file = sys.stderr)
+ if not opcodes_first_page:
+ for t in tmp:
+ t2 = re.match(r'.*Set Sorted by Opcode[\s\.]+(\d+)', t)
+ if t2:
+ print("Found: {}".format(t2.groups()), file = sys.stderr)
+ opcodes_first_page = int(t2.group(1))
+ continue
+ t2 = re.match(r'.*Set Sorted by Version[\s\.]+(\d+)', t)
+ if t2:
+ print("Found: {}".format(t2.groups()), file = sys.stderr)
+ opcodes_last_page = int(t2.group(1)) - 1
+ break
+
+ t2 = re.match(r'^(\d+)\s+.*$', tmp[-1])
+ if not t2:
+ t2 = re.match(r'.*\s+(\d+)$', tmp[-1])
+ if t2:
+ first_page = int(t2.group(1))
+ if first_page < 100:
+ first_page = i - 1
+ break
+ return first_page, opcodes_first_page, opcodes_last_page
+
+pageoffset, opcodes_first_page, opcodes_last_page = find_pdf_pagenumber_offset()
+print("Offset = {}, opcodes on pages {}..{} (phys pages {}..{})".format(pageoffset, opcodes_first_page, opcodes_last_page, opcodes_first_page + pageoffset, opcodes_last_page + pageoffset), file = sys.stderr)
+
+def add_mode_priv(mode, priv):
+ ret = ""
+ if "64" in mode:
+ ret += ", M64: true"
+ if "P" in priv or "H" in priv:
+ ret += ", Priv: true"
+ return ret
+
+def ppcmask(val, s, l):
+ return (val & ((1 << l) - 1)) << (31 - (s + l - 1))
+
+def do_sorted_opcodes(fmt_map, ins_stat):
+ ins_num = 0
+
+ for i in range(opcodes_first_page, opcodes_last_page):
+ tmp = read_pdf_page(i + pageoffset)[1:-1] # skip header and page number
+
+ for line in tmp:
+ #print(line)
+ tmp = re.match(r'^\s+Instruction1\s+Format.*', line)
+ if tmp:
+ priv_off = line.find("Privilege3")
+ mode_off = line.find("Mode Dep4")
+
+ tmp = re.match(r'([\.01]{6})\s+([/\.01]{5})\s+([/\.01]{5})\s+([/\.01]{5})\s+([/\.01]{5})\s+([/\.01]{6})\s+(B|X|XO|D|VX|VC|VA|SC|I|XL|DX|M|D|MD|MDS|XFX|XX1|XS|DQ|DS|Z22|Z23|A|XX3|XX4|XX2|XFL)\s+(\S+)\s+(\d+)\s+(\S+)\s+(PPC|P1|P2|v2.00|v2.01|v2.02|v2.03|v2.04|v2.05|v2.06|v2.07|v3.0|v3.0B)(.*)', line)
+
+ if not tmp:
+ continue
+ ins0_5 = tmp.group(1)
+ ins6_10 = tmp.group(2)
+ ins11_15 = tmp.group(3)
+ ins16_20 = tmp.group(4)
+ ins21_25 = tmp.group(5)
+ ins26_31 = tmp.group(6)
+ fmt = tmp.group(7)
+ ins_book = tmp.group(8)
+ pagenum = int(tmp.group(9))
+ mnem = tmp.group(10).replace("_", "")
+ if mnem == "paste[.]":
+ mnem = "paste."
+ ins_isa = tmp.group(11)
+
+ priv = line[priv_off:priv_off + 4].strip()
+ mode = line[mode_off:mode_off + 4].strip()
+ ins_desc = line[mode_off + 4:].strip()
+
+ add_stat(ins_stat, "Fmt " + fmt)
+ add_stat(ins_stat, "Priv " + priv)
+ add_stat(ins_stat, "Mod " + mode)
+ add_fmt_ins(fmt_map, "Fmt " + fmt, mnem)
+
+ if re.match(r'^[01]+$', ins0_5 + ins6_10 + ins11_15 + ins16_20 + ins21_25 + ins26_31):
+ outp = 'Name: "{}", Opcode: 0x{:08x}, Mask: 0xFFFFFFFF'.format(mnem,
+ int(ins0_5 + ins6_10 + ins11_15 + ins16_20 + ins21_25 + ins26_31, 2))
+ outp += add_mode_priv(mode, priv)
+ print("{" + outp + "},")
+ ins_num += 1
+ continue
+
+ if mnem in isa_pagenum_correction:
+ pagenum += isa_pagenum_correction[mnem]
+
+ tmp = read_pdf_page(pagenum + pageoffset, True)
+
+ #
+ # We are looking for a pattern like this:
+ #
+ # Trap Word Immediate D-form
+ # twi TO,RA,SI
+ # 3 TO RA SI
+ # 0 6 11 16 31
+ mnem_list = mnem.split('[', 1)
+ mnem_short = re.escape(mnem_list[0])
+ found = False
+ for n in range(len(tmp) - 1):
+ if mnem == tmp[n] or re.match(r"{} (FRT|FRS|FLM|FXM|CT|IH|XT|XS|BO|VR|S|WC|L|T|R|A|RA|RT|BF|BT|RB|target_addr).*".format(mnem_short), tmp[n]):
+ break
+ else:
+ print("!!!Error: could not find {} on page {}".format(mnem, pagenum + pageoffset), file = sys.stderr)
+ sys.exit(-1)
+
+ # Found the instruction(s), see now how many variants
+ for n1 in range(n, len(tmp)):
+ if re.match(r"\b0\b\s+[\d\s]+\b31\b", tmp[n1]):
+ #print(n1)
+ break
+ else:
+ print("!!!Error: could not find format for {} on page {}".format(mnem, pagenum + pageoffset), file = sys.stderr)
+ sys.exit(-1)
+
+ namesraw = re.sub(r'(/ )+', '/ ', tmp[n1 - 1]).upper()
+ namesraw = namesraw.replace('AXBXTX', "AX BX TX") # xxperm xxpermr xscmpeqdp xscmpgtdp xscmpgedp
+ namesraw = namesraw.replace('CXAXBX', "CX AX BX") # xxsel
+ namesraw = namesraw.replace('DMBXTX', "DM BX TX") # xvtstdcsp xvtstdcdp
+ namesraw = namesraw.replace('AXBX', "AX BX") # xscmpexpdp
+ namesraw = namesraw.replace('BXTX', "BX TX") # xxinsertw
+ names = namesraw.split()
+ numbers = [int(i) for i in tmp[n1].split()]
+
+ comment = ""
+ if "addpcis" == tmp[n][:7]:
+ # this one is just badly formatted
+ names = ["19", "RT", "D1", "D0", "2", "D2"]
+ numbers = [0, 6, 11, 16, 26, 31]
+ if "darn" == tmp[n][:4]:
+ # this one is just badly formatted
+ names = ["31", "RT", "///", "L", "///", "755", "/"]
+ numbers = [0, 6, 11, 14, 16, 21, 31]
+ if "sc " == tmp[n][:3]:
+ # this one is just badly formatted
+ names += ["/"]
+ elif len(numbers) > 5 and "RC" == names[4].upper() and numbers[4] == 21 and numbers[5] == 31:
+ # vcmpneb & co have missing bitfield offset right before the last one
+ comment += "fixup"
+ numbers = numbers[:5] + [22] + numbers[5:]
+
+ for i in range(n, n1 - 1):
+ predef = {}
+ com2 = comment
+ ext = re.match(r'^(\S+)\s+\S+\s+\(([^\)]+)\)$', tmp[i])
+ outp = '{'
+ if ext:
+ extbits = ext.group(2).strip()
+ # we have "(OE=1 Rc=0)" or "(if Rc=0)"
+ ee = re.sub(r'(\(|\)|if )', '', extbits, flags = re.I).split()
+ for e in ee:
+ e2 = e.split("=")
+ predef[e2[0].upper()] = int(e2[1])
+ outp += 'Name: "{}", '.format(ext.group(1))
+ else:
+ outp += 'Name: "{}", '.format(tmp[i].split()[0])
+
+ check_bitmap = 0
+ opcode = 0
+ opcodemask = 0
+ bits = {}
+ for j in range(len(names)):
+ start = numbers[j]
+ if j + 1 < len(numbers): # bc BO,BI,target_addr (AA=0 LK=0)
+ nn = numbers[j + 1] - numbers[j]
+ if j == len(names) - 1 and numbers[j + 1] == 31:
+ nn += 1
+ else:
+ if numbers[j] != 31:
+ nn = 32 - numbers[j]
+ else:
+ nn = 1
+
+ for n in range(start, start + nn):
+ bit = 1 << (31 - n)
+ if check_bitmap & bit:
+ print("!!!Error: bit {} overlap in {}".format(n, mnem), file = sys.stderr)
+ check_bitmap |= bit
+
+ if names[j].upper() in predef:
+ if nn != 1:
+ print("!!!Error: bitfield {} is expected to be a single bit in {}".format(names[j], mnem), file = sys.stderr)
+ sys.exit(-10)
+ opcodemask |= ppcmask(1, start, nn)
+ opcode |= ppcmask(predef[names[j].upper()], start, nn)
+ com2 += " {}:{}({})".format(predef[names[j].upper()], start, names[j])
+ continue
+ if re.match(r'\d+', names[j]):
+ opcodemask |= ppcmask(0xffffffff, start, nn)
+ opcode |= ppcmask(int(names[j]), start, nn)
+ com2 += ' {}:{}..{}'.format(names[j], start, start + nn - 1)
+ continue
+ if re.match(r'/+', names[j]):
+ opcodemask |= ppcmask(0xffffffff, start, nn)
+ com2 += ' 0:{}..{}(///)'.format(start, start + nn - 1)
+ continue
+ bits[names[j].upper()] = (start, nn)
+
+ if check_bitmap != 0xFFFFFFFF:
+ com2 += " 0x{:08X}".format(check_bitmap)
+ outp += "Opcode: 0x{:08x}, Mask: 0x{:08x}".format(opcode, opcodemask)
+ outp += add_mode_priv(mode, priv)
+ outp += ", Fields:map[string]ppc64.InsnBits{"
+ for k, v in sorted(bits.items()):
+ outp += '"{}": ppc64.InsnBits{{{}, {}}}, '.format(k, v[0], v[1])
+ outp += "}"
+ outp += "}, "
+ outp += " //{}".format(com2)
+ print(outp)
+ ins_num += 1
+
+ return ins_num
+
+ins_stat = {}
+fmt_map = {}
+
+print('// Code generated by {}. DO NOT EDIT.'.format(sys.argv[0]))
+print('')
+print('// +build !codeanalysis')
+print('')
+print('package isnsn')
+print('')
+print('import "github.com/google/syzkaller/pkg/ifuzz/powerpc"')
+print('')
+print('func init() {')
+print(' powerpc.Register(insns)')
+print('}')
+print('')
+print('var insns = []*powerpc.Insn{')
+
+ins_num = do_sorted_opcodes(fmt_map, ins_stat)
+
+print("}")
+
+print("Total {} instructions".format(ins_num), file = sys.stderr)
+ins_num = 0
+for k, v in sorted(ins_stat.items()):
+ print("\t{}: {} / {}".format(k if k else "-", v, len(fmt_map[k]) if k in fmt_map else "-"), file = sys.stderr)
+ ins_num += v
+print("Sorted {} instructions".format(ins_num/3), file = sys.stderr)
diff --git a/pkg/ifuzz/powerpc/generated/empty.go b/pkg/ifuzz/powerpc/generated/empty.go
new file mode 100644
index 000000000..1933cb1dd
--- /dev/null
+++ b/pkg/ifuzz/powerpc/generated/empty.go
@@ -0,0 +1,6 @@
+// Copyright 2020 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+// To unbreak build with insns.go is excluded by build tags.
+
+package generated
diff --git a/pkg/ifuzz/powerpc/generated/insns.go b/pkg/ifuzz/powerpc/generated/insns.go
new file mode 100644
index 000000000..ba85eaae0
--- /dev/null
+++ b/pkg/ifuzz/powerpc/generated/insns.go
@@ -0,0 +1,1181 @@
+// Code generated by ./powerisa30_to_syz. DO NOT EDIT.
+
+// +build !codeanalysis
+
+package generated
+
+import "github.com/google/syzkaller/pkg/ifuzz/powerpc"
+
+func init() {
+ powerpc.Register(insns)
+}
+
+var insns = []*powerpc.Insn{
+ {Name: "tdi", Opcode: 0x08000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "SI": powerpc.InsnBits{16, 16}, "TO": powerpc.InsnBits{6, 5}}}, // 2:0..5
+ {Name: "twi", Opcode: 0x0c000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "SI": powerpc.InsnBits{16, 16}, "TO": powerpc.InsnBits{6, 5}}}, // 3:0..5
+ {Name: "vaddubm", Opcode: 0x10000000, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21..31
+ {Name: "vadduhm", Opcode: 0x10000040, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 64:21..31
+ {Name: "vadduwm", Opcode: 0x10000080, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 128:21..31
+ {Name: "vaddudm", Opcode: 0x100000c0, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 192:21..31
+ {Name: "vadduqm", Opcode: 0x10000100, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 256:21..31
+ {Name: "vaddcuq", Opcode: 0x10000140, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 320:21..31
+ {Name: "vaddcuw", Opcode: 0x10000180, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 384:21..31
+ {Name: "vaddubs", Opcode: 0x10000200, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 512:21..31
+ {Name: "vadduhs", Opcode: 0x10000240, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 576:21..31
+ {Name: "vadduws", Opcode: 0x10000280, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 640:21..31
+ {Name: "vaddsbs", Opcode: 0x10000300, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 768:21..31
+ {Name: "vaddshs", Opcode: 0x10000340, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 832:21..31
+ {Name: "vaddsws", Opcode: 0x10000380, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 896:21..31
+ {Name: "vsububm", Opcode: 0x10000400, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1024:21..31
+ {Name: "vsubuhm", Opcode: 0x10000440, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1088:21..31
+ {Name: "vsubuwm", Opcode: 0x10000480, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1152:21..31
+ {Name: "vsubudm", Opcode: 0x100004c0, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1216:21..31
+ {Name: "vsubuqm", Opcode: 0x10000500, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1280:21..31
+ {Name: "vsubcuq", Opcode: 0x10000540, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1344:21..31
+ {Name: "vsubcuw", Opcode: 0x10000580, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1408:21..31
+ {Name: "vsububs", Opcode: 0x10000600, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1536:21..31
+ {Name: "vsubuhs", Opcode: 0x10000640, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1600:21..31
+ {Name: "vsubuws", Opcode: 0x10000680, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1664:21..31
+ {Name: "vsubsbs", Opcode: 0x10000700, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1792:21..31
+ {Name: "vsubshs", Opcode: 0x10000740, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1856:21..31
+ {Name: "vsubsws", Opcode: 0x10000780, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1920:21..31
+ {Name: "vmul10cuq", Opcode: 0x10000001, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:16..20(///) 1:21..31
+ {Name: "vmul10ecuq", Opcode: 0x10000041, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 65:21..31
+ {Name: "vmul10uq", Opcode: 0x10000201, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:16..20(///) 513:21..31
+ {Name: "vmul10euq", Opcode: 0x10000241, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 577:21..31
+ {Name: "bcdcpsgn.", Opcode: 0x10000341, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 833:21..31
+ {Name: "bcdadd.", Opcode: 0x10000401, Mask: 0xfc0005ff, Fields: map[string]powerpc.InsnBits{"PS": powerpc.InsnBits{22, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21..21 1:23..31
+ {Name: "bcdsub.", Opcode: 0x10000441, Mask: 0xfc0005ff, Fields: map[string]powerpc.InsnBits{"PS": powerpc.InsnBits{22, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21..21 65:23..31
+ {Name: "bcdus.", Opcode: 0x10000481, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21..21 0:22..22(///) 129:23..31
+ {Name: "bcds.", Opcode: 0x100004c1, Mask: 0xfc0005ff, Fields: map[string]powerpc.InsnBits{"PS": powerpc.InsnBits{22, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21..21 193:23..31
+ {Name: "bcdtrunc.", Opcode: 0x10000501, Mask: 0xfc0005ff, Fields: map[string]powerpc.InsnBits{"PS": powerpc.InsnBits{22, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21..21 257:23..31
+ {Name: "bcdutrunc.", Opcode: 0x10000541, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21..21 0:22..22(///) 321:23..31
+ {Name: "bcdctsq.", Opcode: 0x10000581, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15 1:21..21 0:22..22(///) 385:23..31
+ {Name: "bcdcfsq.", Opcode: 0x10020581, Mask: 0xfc1f05ff, Fields: map[string]powerpc.InsnBits{"PS": powerpc.InsnBits{22, 1}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 2:11..15 1:21..21 385:23..31
+ {Name: "bcdctz.", Opcode: 0x10040581, Mask: 0xfc1f05ff, Fields: map[string]powerpc.InsnBits{"PS": powerpc.InsnBits{22, 1}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 4:11..15 1:21..21 385:23..31
+ {Name: "bcdctn.", Opcode: 0x10050581, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 5:11..15 1:21..21 0:22..22(///) 385:23..31
+ {Name: "bcdcfz.", Opcode: 0x10060581, Mask: 0xfc1f05ff, Fields: map[string]powerpc.InsnBits{"PS": powerpc.InsnBits{22, 1}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 6:11..15 1:21..21 385:23..31
+ {Name: "bcdcfn.", Opcode: 0x10070581, Mask: 0xfc1f05ff, Fields: map[string]powerpc.InsnBits{"PS": powerpc.InsnBits{22, 1}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 7:11..15 1:21..21 385:23..31
+ {Name: "bcdsetsgn.", Opcode: 0x101f0581, Mask: 0xfc1f05ff, Fields: map[string]powerpc.InsnBits{"PS": powerpc.InsnBits{22, 1}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 31:11..15 1:21..21 385:23..31
+ {Name: "bcdsr.", Opcode: 0x100005c1, Mask: 0xfc0005ff, Fields: map[string]powerpc.InsnBits{"PS": powerpc.InsnBits{22, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21..21 449:23..31
+ {Name: "vmaxub", Opcode: 0x10000002, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 2:21..31
+ {Name: "vmaxuh", Opcode: 0x10000042, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 66:21..31
+ {Name: "vmaxuw", Opcode: 0x10000082, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 130:21..31
+ {Name: "vmaxud", Opcode: 0x100000c2, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 194:21..31
+ {Name: "vmaxsb", Opcode: 0x10000102, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 258:21..31
+ {Name: "vmaxsh", Opcode: 0x10000142, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 322:21..31
+ {Name: "vmaxsw", Opcode: 0x10000182, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 386:21..31
+ {Name: "vmaxsd", Opcode: 0x100001c2, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 450:21..31
+ {Name: "vminub", Opcode: 0x10000202, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 514:21..31
+ {Name: "vminuh", Opcode: 0x10000242, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 578:21..31
+ {Name: "vminuw", Opcode: 0x10000282, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 642:21..31
+ {Name: "vminud", Opcode: 0x100002c2, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 706:21..31
+ {Name: "vminsb", Opcode: 0x10000302, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 770:21..31
+ {Name: "vminsh", Opcode: 0x10000342, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 834:21..31
+ {Name: "vminsw", Opcode: 0x10000382, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 898:21..31
+ {Name: "vminsd", Opcode: 0x100003c2, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 962:21..31
+ {Name: "vavgub", Opcode: 0x10000402, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1026:21..31
+ {Name: "vavguh", Opcode: 0x10000442, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1090:21..31
+ {Name: "vavguw", Opcode: 0x10000482, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1154:21..31
+ {Name: "vavgsb", Opcode: 0x10000502, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1282:21..31
+ {Name: "vavgsh", Opcode: 0x10000542, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1346:21..31
+ {Name: "vavgsw", Opcode: 0x10000582, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1410:21..31
+ {Name: "vclzlsbb", Opcode: 0x10000602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"RT": powerpc.InsnBits{6, 5}, "VRB": powerpc.InsnBits{16, 5}}}, // 4:0..5 0:11..15 1538:21..31
+ {Name: "vctzlsbb", Opcode: 0x10010602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"RT": powerpc.InsnBits{6, 5}, "VRB": powerpc.InsnBits{16, 5}}}, // 4:0..5 1:11..15 1538:21..31
+ {Name: "vnegw", Opcode: 0x10060602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 6:11..15 1538:21..31
+ {Name: "vnegd", Opcode: 0x10070602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 7:11..15 1538:21..31
+ {Name: "vprtybw", Opcode: 0x10080602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 8:11..15 1538:21..31
+ {Name: "vprtybd", Opcode: 0x10090602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 9:11..15 1538:21..31
+ {Name: "vprtybq", Opcode: 0x100a0602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 10:11..15 1538:21..31
+ {Name: "vextsb2w", Opcode: 0x10100602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 16:11..15 1538:21..31
+ {Name: "vextsh2w", Opcode: 0x10110602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 17:11..15 1538:21..31
+ {Name: "vextsb2d", Opcode: 0x10180602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 24:11..15 1538:21..31
+ {Name: "vextsh2d", Opcode: 0x10190602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 25:11..15 1538:21..31
+ {Name: "vextsw2d", Opcode: 0x101a0602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 26:11..15 1538:21..31
+ {Name: "vctzb", Opcode: 0x101c0602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 28:11..15 1538:21..31
+ {Name: "vctzh", Opcode: 0x101d0602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 29:11..15 1538:21..31
+ {Name: "vctzw", Opcode: 0x101e0602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 30:11..15 1538:21..31
+ {Name: "vctzd", Opcode: 0x101f0602, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 31:11..15 1538:21..31
+ {Name: "vshasigmaw", Opcode: 0x10000682, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"SIX": powerpc.InsnBits{17, 4}, "ST": powerpc.InsnBits{16, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1666:21..31
+ {Name: "vshasigmad", Opcode: 0x100006c2, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"SIX": powerpc.InsnBits{17, 4}, "ST": powerpc.InsnBits{16, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1730:21..31
+ {Name: "vclzb", Opcode: 0x10000702, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 1794:21..31
+ {Name: "vclzh", Opcode: 0x10000742, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 1858:21..31
+ {Name: "vclzw", Opcode: 0x10000782, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 1922:21..31
+ {Name: "vclzd", Opcode: 0x100007c2, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 1986:21..31
+ {Name: "vabsdub", Opcode: 0x10000403, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1027:21..31
+ {Name: "vabsduh", Opcode: 0x10000443, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1091:21..31
+ {Name: "vabsduw", Opcode: 0x10000483, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1155:21..31
+ {Name: "vpopcntb", Opcode: 0x10000703, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 1795:21..31
+ {Name: "vpopcnth", Opcode: 0x10000743, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 1859:21..31
+ {Name: "vpopcntw", Opcode: 0x10000783, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 1923:21..31
+ {Name: "vpopcntd", Opcode: 0x100007c3, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 1987:21..31
+ {Name: "vrlb", Opcode: 0x10000004, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 4:21..31
+ {Name: "vrlh", Opcode: 0x10000044, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 68:21..31
+ {Name: "vrlw", Opcode: 0x10000084, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 132:21..31
+ {Name: "vrld", Opcode: 0x100000c4, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 196:21..31
+ {Name: "vslb", Opcode: 0x10000104, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 260:21..31
+ {Name: "vslh", Opcode: 0x10000144, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 324:21..31
+ {Name: "vslw", Opcode: 0x10000184, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 388:21..31
+ {Name: "vsl", Opcode: 0x100001c4, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 452:21..31
+ {Name: "vsrb", Opcode: 0x10000204, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 516:21..31
+ {Name: "vsrh", Opcode: 0x10000244, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 580:21..31
+ {Name: "vsrw", Opcode: 0x10000284, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 644:21..31
+ {Name: "vsr", Opcode: 0x100002c4, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 708:21..31
+ {Name: "vsrab", Opcode: 0x10000304, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 772:21..31
+ {Name: "vsrah", Opcode: 0x10000344, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 836:21..31
+ {Name: "vsraw", Opcode: 0x10000384, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 900:21..31
+ {Name: "vsrad", Opcode: 0x100003c4, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 964:21..31
+ {Name: "vand", Opcode: 0x10000404, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1028:21..31
+ {Name: "vandc", Opcode: 0x10000444, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1092:21..31
+ {Name: "vor", Opcode: 0x10000484, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1156:21..31
+ {Name: "vxor", Opcode: 0x100004c4, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1220:21..31
+ {Name: "vnor", Opcode: 0x10000504, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1284:21..31
+ {Name: "vorc", Opcode: 0x10000544, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1348:21..31
+ {Name: "vnand", Opcode: 0x10000584, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1412:21..31
+ {Name: "vsld", Opcode: 0x100005c4, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1476:21..31
+ {Name: "mfvscr", Opcode: 0x10000604, Mask: 0xfc1fffff, Fields: map[string]powerpc.InsnBits{"VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 0:16..20(///) 1540:21..31
+ {Name: "mtvscr", Opcode: 0x10000644, Mask: 0xffff07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}}}, // 4:0..5 0:6..10(///) 0:11..15(///) 1604:21..31
+ {Name: "veqv", Opcode: 0x10000684, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1668:21..31
+ {Name: "vsrd", Opcode: 0x100006c4, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1732:21..31
+ {Name: "vsrv", Opcode: 0x10000704, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1796:21..31
+ {Name: "vslv", Opcode: 0x10000744, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1860:21..31
+ {Name: "vrlwmi", Opcode: 0x10000085, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 133:21..31
+ {Name: "vrldmi", Opcode: 0x100000c5, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 197:21..31
+ {Name: "vrlwnm", Opcode: 0x10000185, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 389:21..31
+ {Name: "vrldnm", Opcode: 0x100001c5, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 453:21..31
+ {Name: "vcmpequb", Opcode: 0x10000006, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 6:22..31
+ {Name: "vcmpequb.", Opcode: 0x10000406, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 6:22..31
+ {Name: "vcmpequh", Opcode: 0x10000046, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 70:22..31
+ {Name: "vcmpequh.", Opcode: 0x10000446, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 70:22..31
+ {Name: "vcmpequw", Opcode: 0x10000086, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 134:22..31
+ {Name: "vcmpequw.", Opcode: 0x10000486, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 134:22..31
+ {Name: "vcmpeqfp", Opcode: 0x100000c6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 198:22..31
+ {Name: "vcmpeqfp.", Opcode: 0x100004c6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 198:22..31
+ {Name: "vcmpgefp", Opcode: 0x100001c6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 454:22..31
+ {Name: "vcmpgefp.", Opcode: 0x100005c6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 454:22..31
+ {Name: "vcmpgtub", Opcode: 0x10000206, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 518:22..31
+ {Name: "vcmpgtub.", Opcode: 0x10000606, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 518:22..31
+ {Name: "vcmpgtuh", Opcode: 0x10000246, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 582:22..31
+ {Name: "vcmpgtuh.", Opcode: 0x10000646, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 582:22..31
+ {Name: "vcmpgtuw", Opcode: 0x10000286, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 646:22..31
+ {Name: "vcmpgtuw.", Opcode: 0x10000686, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 646:22..31
+ {Name: "vcmpgtfp", Opcode: 0x100002c6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 710:22..31
+ {Name: "vcmpgtfp.", Opcode: 0x100006c6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 710:22..31
+ {Name: "vcmpgtsb", Opcode: 0x10000306, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 774:22..31
+ {Name: "vcmpgtsb.", Opcode: 0x10000706, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 774:22..31
+ {Name: "vcmpgtsh", Opcode: 0x10000346, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 838:22..31
+ {Name: "vcmpgtsh.", Opcode: 0x10000746, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 838:22..31
+ {Name: "vcmpgtsw", Opcode: 0x10000386, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 902:22..31
+ {Name: "vcmpgtsw.", Opcode: 0x10000786, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 902:22..31
+ {Name: "vcmpbfp", Opcode: 0x100003c6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 966:22..31
+ {Name: "vcmpbfp.", Opcode: 0x100007c6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 966:22..31
+ {Name: "vcmpneb", Opcode: 0x10000007, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, //fixup 4:0..5 0:21(RC) 7:22..31
+ {Name: "vcmpneb.", Opcode: 0x10000407, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, //fixup 4:0..5 1:21(RC) 7:22..31
+ {Name: "vcmpneh", Opcode: 0x10000047, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, //fixup 4:0..5 0:21(RC) 71:22..31
+ {Name: "vcmpneh.", Opcode: 0x10000447, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, //fixup 4:0..5 1:21(RC) 71:22..31
+ {Name: "vcmpnew", Opcode: 0x10000087, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, //fixup 4:0..5 0:21(RC) 135:22..31
+ {Name: "vcmpnew.", Opcode: 0x10000487, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, //fixup 4:0..5 1:21(RC) 135:22..31
+ {Name: "vcmpequd", Opcode: 0x100000c7, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 199:22..31
+ {Name: "vcmpequd.", Opcode: 0x100004c7, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 199:22..31
+ {Name: "vcmpnezb", Opcode: 0x10000107, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, //fixup 4:0..5 0:21(RC) 263:22..31
+ {Name: "vcmpnezb.", Opcode: 0x10000507, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, //fixup 4:0..5 1:21(RC) 263:22..31
+ {Name: "vcmpnezh", Opcode: 0x10000147, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, //fixup 4:0..5 0:21(RC) 327:22..31
+ {Name: "vcmpnezh.", Opcode: 0x10000547, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, //fixup 4:0..5 1:21(RC) 327:22..31
+ {Name: "vcmpnezw", Opcode: 0x10000187, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, //fixup 4:0..5 0:21(RC) 391:22..31
+ {Name: "vcmpnezw.", Opcode: 0x10000587, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, //fixup 4:0..5 1:21(RC) 391:22..31
+ {Name: "vcmpgtud", Opcode: 0x100002c7, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 711:22..31
+ {Name: "vcmpgtud.", Opcode: 0x100006c7, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 711:22..31
+ {Name: "vcmpgtsd", Opcode: 0x100003c7, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21(RC) 967:22..31
+ {Name: "vcmpgtsd.", Opcode: 0x100007c7, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1:21(RC) 967:22..31
+ {Name: "vmuloub", Opcode: 0x10000008, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 8:21..31
+ {Name: "vmulouh", Opcode: 0x10000048, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 72:21..31
+ {Name: "vmulouw", Opcode: 0x10000088, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 136:21..31
+ {Name: "vmulosb", Opcode: 0x10000108, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 264:21..31
+ {Name: "vmulosh", Opcode: 0x10000148, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 328:21..31
+ {Name: "vmulosw", Opcode: 0x10000188, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 392:21..31
+ {Name: "vmuleub", Opcode: 0x10000208, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 520:21..31
+ {Name: "vmuleuh", Opcode: 0x10000248, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 584:21..31
+ {Name: "vmuleuw", Opcode: 0x10000288, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 648:21..31
+ {Name: "vmulesb", Opcode: 0x10000308, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 776:21..31
+ {Name: "vmulesh", Opcode: 0x10000348, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 840:21..31
+ {Name: "vmulesw", Opcode: 0x10000388, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 904:21..31
+ {Name: "vpmsumb", Opcode: 0x10000408, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1032:21..31
+ {Name: "vpmsumh", Opcode: 0x10000448, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1096:21..31
+ {Name: "vpmsumw", Opcode: 0x10000488, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1160:21..31
+ {Name: "vpmsumd", Opcode: 0x100004c8, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1224:21..31
+ {Name: "vcipher", Opcode: 0x10000508, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1288:21..31
+ {Name: "vncipher", Opcode: 0x10000548, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1352:21..31
+ {Name: "vsbox", Opcode: 0x100005c8, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:16..20(///) 1480:21..31
+ {Name: "vsum4ubs", Opcode: 0x10000608, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1544:21..31
+ {Name: "vsum4shs", Opcode: 0x10000648, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1608:21..31
+ {Name: "vsum2sws", Opcode: 0x10000688, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1672:21..31
+ {Name: "vsum4sbs", Opcode: 0x10000708, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1800:21..31
+ {Name: "vsumsws", Opcode: 0x10000788, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1928:21..31
+ {Name: "vmuluwm", Opcode: 0x10000089, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 137:21..31
+ {Name: "vcipherlast", Opcode: 0x10000509, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1289:21..31
+ {Name: "vncipherlast", Opcode: 0x10000549, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1353:21..31
+ {Name: "vaddfp", Opcode: 0x1000000a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 10:21..31
+ {Name: "vsubfp", Opcode: 0x1000004a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 74:21..31
+ {Name: "vrefp", Opcode: 0x1000010a, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 266:21..31
+ {Name: "vrsqrtefp", Opcode: 0x1000014a, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 330:21..31
+ {Name: "vexptefp", Opcode: 0x1000018a, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 394:21..31
+ {Name: "vlogefp", Opcode: 0x100001ca, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 458:21..31
+ {Name: "vrfin", Opcode: 0x1000020a, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 522:21..31
+ {Name: "vrfiz", Opcode: 0x1000024a, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 586:21..31
+ {Name: "vrfip", Opcode: 0x1000028a, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 650:21..31
+ {Name: "vrfim", Opcode: 0x100002ca, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 714:21..31
+ {Name: "vcfux", Opcode: 0x1000030a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 778:21..31
+ {Name: "vcfsx", Opcode: 0x1000034a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 842:21..31
+ {Name: "vctuxs", Opcode: 0x1000038a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 906:21..31
+ {Name: "vctsxs", Opcode: 0x100003ca, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 970:21..31
+ {Name: "vmaxfp", Opcode: 0x1000040a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1034:21..31
+ {Name: "vminfp", Opcode: 0x1000044a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1098:21..31
+ {Name: "vmrghb", Opcode: 0x1000000c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 12:21..31
+ {Name: "vmrghh", Opcode: 0x1000004c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 76:21..31
+ {Name: "vmrghw", Opcode: 0x1000008c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 140:21..31
+ {Name: "vmrglb", Opcode: 0x1000010c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 268:21..31
+ {Name: "vmrglh", Opcode: 0x1000014c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 332:21..31
+ {Name: "vmrglw", Opcode: 0x1000018c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 396:21..31
+ {Name: "vspltb", Opcode: 0x1000020c, Mask: 0xfc1007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{12, 4}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..11(///) 524:21..31
+ {Name: "vsplth", Opcode: 0x1000024c, Mask: 0xfc1807ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{13, 3}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..12(///) 588:21..31
+ {Name: "vspltw", Opcode: 0x1000028c, Mask: 0xfc1c07ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{14, 2}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..13(///) 652:21..31
+ {Name: "vspltisb", Opcode: 0x1000030c, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"SIM": powerpc.InsnBits{11, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:16..20(///) 780:21..31
+ {Name: "vspltish", Opcode: 0x1000034c, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"SIM": powerpc.InsnBits{11, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:16..20(///) 844:21..31
+ {Name: "vspltisw", Opcode: 0x1000038c, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"SIM": powerpc.InsnBits{11, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:16..20(///) 908:21..31
+ {Name: "vslo", Opcode: 0x1000040c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1036:21..31
+ {Name: "vsro", Opcode: 0x1000044c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1100:21..31
+ {Name: "vgbbd", Opcode: 0x1000050c, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 1292:21..31
+ {Name: "vbpermq", Opcode: 0x1000054c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1356:21..31
+ {Name: "vbpermd", Opcode: 0x100005cc, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1484:21..31
+ {Name: "vmrgow", Opcode: 0x1000068c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1676:21..31
+ {Name: "vmrgew", Opcode: 0x1000078c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1932:21..31
+ {Name: "vextractub", Opcode: 0x1000020d, Mask: 0xfc1007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{12, 4}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..11(///) 525:21..31
+ {Name: "vextractuh", Opcode: 0x1000024d, Mask: 0xfc1007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{12, 4}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..11(///) 589:21..31
+ {Name: "vextractuw", Opcode: 0x1000028d, Mask: 0xfc1007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{12, 4}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..11(///) 653:21..31
+ {Name: "vextractd", Opcode: 0x100002cd, Mask: 0xfc1007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{12, 4}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..11(///) 717:21..31
+ {Name: "vinsertb", Opcode: 0x1000030d, Mask: 0xfc1007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{12, 4}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..11(///) 781:21..31
+ {Name: "vinserth", Opcode: 0x1000034d, Mask: 0xfc1007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{12, 4}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..11(///) 845:21..31
+ {Name: "vinsertw", Opcode: 0x1000038d, Mask: 0xfc1007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{12, 4}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..11(///) 909:21..31
+ {Name: "vinsertd", Opcode: 0x100003cd, Mask: 0xfc1007ff, Fields: map[string]powerpc.InsnBits{"UIM": powerpc.InsnBits{12, 4}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..11(///) 973:21..31
+ {Name: "vextublx", Opcode: 0x1000060d, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}, "VRB": powerpc.InsnBits{16, 5}}}, // 4:0..5 1549:21..31
+ {Name: "vextuhlx", Opcode: 0x1000064d, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}, "VRB": powerpc.InsnBits{16, 5}}}, // 4:0..5 1613:21..31
+ {Name: "vextuwlx", Opcode: 0x1000068d, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}, "VRB": powerpc.InsnBits{16, 5}}}, // 4:0..5 1677:21..31
+ {Name: "vextubrx", Opcode: 0x1000070d, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}, "VRB": powerpc.InsnBits{16, 5}}}, // 4:0..5 1805:21..31
+ {Name: "vextuhrx", Opcode: 0x1000074d, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}, "VRB": powerpc.InsnBits{16, 5}}}, // 4:0..5 1869:21..31
+ {Name: "vextuwrx", Opcode: 0x1000078d, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}, "VRB": powerpc.InsnBits{16, 5}}}, // 4:0..5 1933:21..31
+ {Name: "vpkuhum", Opcode: 0x1000000e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 14:21..31
+ {Name: "vpkuwum", Opcode: 0x1000004e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 78:21..31
+ {Name: "vpkuhus", Opcode: 0x1000008e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 142:21..31
+ {Name: "vpkuwus", Opcode: 0x100000ce, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 206:21..31
+ {Name: "vpkshus", Opcode: 0x1000010e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 270:21..31
+ {Name: "vpkswus", Opcode: 0x1000014e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 334:21..31
+ {Name: "vpkshss", Opcode: 0x1000018e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 398:21..31
+ {Name: "vpkswss", Opcode: 0x100001ce, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 462:21..31
+ {Name: "vupkhsb", Opcode: 0x1000020e, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 526:21..31
+ {Name: "vupkhsh", Opcode: 0x1000024e, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 590:21..31
+ {Name: "vupklsb", Opcode: 0x1000028e, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 654:21..31
+ {Name: "vupklsh", Opcode: 0x100002ce, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 718:21..31
+ {Name: "vpkpx", Opcode: 0x1000030e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 782:21..31
+ {Name: "vupkhpx", Opcode: 0x1000034e, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 846:21..31
+ {Name: "vupklpx", Opcode: 0x100003ce, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 974:21..31
+ {Name: "vpkudum", Opcode: 0x1000044e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1102:21..31
+ {Name: "vpkudus", Opcode: 0x100004ce, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1230:21..31
+ {Name: "vpksdus", Opcode: 0x1000054e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1358:21..31
+ {Name: "vpksdss", Opcode: 0x100005ce, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 1486:21..31
+ {Name: "vupkhsw", Opcode: 0x1000064e, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 1614:21..31
+ {Name: "vupklsw", Opcode: 0x100006ce, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:11..15(///) 1742:21..31
+ {Name: "vmhaddshs", Opcode: 0x10000020, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 32:26..31
+ {Name: "vmhraddshs", Opcode: 0x10000021, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 33:26..31
+ {Name: "vmladduhm", Opcode: 0x10000022, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 34:26..31
+ {Name: "vmsumudm", Opcode: 0x10000023, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 35:26..31
+ {Name: "vmsumubm", Opcode: 0x10000024, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 36:26..31
+ {Name: "vmsummbm", Opcode: 0x10000025, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 37:26..31
+ {Name: "vmsumuhm", Opcode: 0x10000026, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 38:26..31
+ {Name: "vmsumuhs", Opcode: 0x10000027, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 39:26..31
+ {Name: "vmsumshm", Opcode: 0x10000028, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 40:26..31
+ {Name: "vmsumshs", Opcode: 0x10000029, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 41:26..31
+ {Name: "vsel", Opcode: 0x1000002a, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 42:26..31
+ {Name: "vperm", Opcode: 0x1000002b, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 43:26..31
+ {Name: "vsldoi", Opcode: 0x1000002c, Mask: 0xfc00043f, Fields: map[string]powerpc.InsnBits{"SHB": powerpc.InsnBits{22, 4}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 0:21..21(///) 44:26..31
+ {Name: "vpermxor", Opcode: 0x1000002d, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 45:26..31
+ {Name: "vmaddfp", Opcode: 0x1000002e, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 46:26..31
+ {Name: "vnmsubfp", Opcode: 0x1000002f, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 47:26..31
+ {Name: "maddhd", Opcode: 0x10000030, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RC": powerpc.InsnBits{21, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 4:0..5 48:26..31
+ {Name: "maddhdu", Opcode: 0x10000031, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RC": powerpc.InsnBits{21, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 4:0..5 49:26..31
+ {Name: "maddld", Opcode: 0x10000033, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RC": powerpc.InsnBits{21, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 4:0..5 51:26..31
+ {Name: "vpermr", Opcode: 0x1000003b, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 59:26..31
+ {Name: "vaddeuqm", Opcode: 0x1000003c, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 60:26..31
+ {Name: "vaddecuq", Opcode: 0x1000003d, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 61:26..31
+ {Name: "vsubeuqm", Opcode: 0x1000003e, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 62:26..31
+ {Name: "vsubecuq", Opcode: 0x1000003f, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRC": powerpc.InsnBits{21, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 4:0..5 63:26..31
+ {Name: "mulli", Opcode: 0x1c000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}, "SI": powerpc.InsnBits{16, 16}}}, // 7:0..5
+ {Name: "subfic", Opcode: 0x20000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}, "SI": powerpc.InsnBits{16, 16}}}, // 8:0..5
+ {Name: "cmpli", Opcode: 0x28000000, Mask: 0xfc400000, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "L": powerpc.InsnBits{10, 1}, "RA": powerpc.InsnBits{11, 5}, "UI": powerpc.InsnBits{16, 16}}}, // 10:0..5 0:9..9(///)
+ {Name: "cmpi", Opcode: 0x2c000000, Mask: 0xfc400000, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "L": powerpc.InsnBits{10, 1}, "RA": powerpc.InsnBits{11, 5}, "SI": powerpc.InsnBits{16, 16}}}, // 11:0..5 0:9..9(///)
+ {Name: "addic", Opcode: 0x30000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}, "SI": powerpc.InsnBits{16, 16}}}, // 12:0..5
+ {Name: "addic.", Opcode: 0x34000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}, "SI": powerpc.InsnBits{16, 16}}}, // 13:0..5
+ {Name: "addi", Opcode: 0x38000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}, "SI": powerpc.InsnBits{16, 16}}}, // 14:0..5
+ {Name: "addis", Opcode: 0x3c000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}, "SI": powerpc.InsnBits{16, 16}}}, // 15:0..5
+ {Name: "bc", Opcode: 0x40000000, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"BD": powerpc.InsnBits{16, 14}, "BI": powerpc.InsnBits{11, 5}, "BO": powerpc.InsnBits{6, 5}}}, // 16:0..5 0:30(AA) 0:31(LK)
+ {Name: "bca", Opcode: 0x40000002, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"BD": powerpc.InsnBits{16, 14}, "BI": powerpc.InsnBits{11, 5}, "BO": powerpc.InsnBits{6, 5}}}, // 16:0..5 1:30(AA) 0:31(LK)
+ {Name: "bcl", Opcode: 0x40000001, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"BD": powerpc.InsnBits{16, 14}, "BI": powerpc.InsnBits{11, 5}, "BO": powerpc.InsnBits{6, 5}}}, // 16:0..5 0:30(AA) 1:31(LK)
+ {Name: "bcla", Opcode: 0x40000003, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"BD": powerpc.InsnBits{16, 14}, "BI": powerpc.InsnBits{11, 5}, "BO": powerpc.InsnBits{6, 5}}}, // 16:0..5 1:30(AA) 1:31(LK)
+ {Name: "scv", Opcode: 0x44000001, Mask: 0xfffff01f, Fields: map[string]powerpc.InsnBits{"LEV": powerpc.InsnBits{20, 7}}}, // 17:0..5 0:6..10(///) 0:11..15(///) 0:16..19(///) 0:27..29(///) 0:30..30 1:31..31
+ {Name: "sc", Opcode: 0x44000002, Mask: 0xfffff01f, Fields: map[string]powerpc.InsnBits{"LEV": powerpc.InsnBits{20, 7}}}, // 17:0..5 0:6..10(///) 0:11..15(///) 0:16..19(///) 0:27..29(///) 1:30..30 0:31..31(///)
+ {Name: "b", Opcode: 0x48000000, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"LI": powerpc.InsnBits{6, 24}}}, // 18:0..5 0:30(AA) 0:31(LK)
+ {Name: "ba", Opcode: 0x48000002, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"LI": powerpc.InsnBits{6, 24}}}, // 18:0..5 1:30(AA) 0:31(LK)
+ {Name: "bl", Opcode: 0x48000001, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"LI": powerpc.InsnBits{6, 24}}}, // 18:0..5 0:30(AA) 1:31(LK)
+ {Name: "bla", Opcode: 0x48000003, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"LI": powerpc.InsnBits{6, 24}}}, // 18:0..5 1:30(AA) 1:31(LK)
+ {Name: "mcrf", Opcode: 0x4c000000, Mask: 0xfc63ffff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "BFA": powerpc.InsnBits{11, 3}}}, // 19:0..5 0:9..10(///) 0:14..15(///) 0:16..20(///) 0:21..30 0:31..31(///)
+ {Name: "crnor", Opcode: 0x4c000042, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"BA": powerpc.InsnBits{11, 5}, "BB": powerpc.InsnBits{16, 5}, "BT": powerpc.InsnBits{6, 5}}}, // 19:0..5 33:21..30 0:31..31(///)
+ {Name: "crandc", Opcode: 0x4c000102, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"BA": powerpc.InsnBits{11, 5}, "BB": powerpc.InsnBits{16, 5}, "BT": powerpc.InsnBits{6, 5}}}, // 19:0..5 129:21..30 0:31..31(///)
+ {Name: "crxor", Opcode: 0x4c000182, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"BA": powerpc.InsnBits{11, 5}, "BB": powerpc.InsnBits{16, 5}, "BT": powerpc.InsnBits{6, 5}}}, // 19:0..5 193:21..30 0:31..31(///)
+ {Name: "crnand", Opcode: 0x4c0001c2, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"BA": powerpc.InsnBits{11, 5}, "BB": powerpc.InsnBits{16, 5}, "BT": powerpc.InsnBits{6, 5}}}, // 19:0..5 225:21..30 0:31..31(///)
+ {Name: "crand", Opcode: 0x4c000202, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"BA": powerpc.InsnBits{11, 5}, "BB": powerpc.InsnBits{16, 5}, "BT": powerpc.InsnBits{6, 5}}}, // 19:0..5 257:21..30 0:31..31(///)
+ {Name: "creqv", Opcode: 0x4c000242, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"BA": powerpc.InsnBits{11, 5}, "BB": powerpc.InsnBits{16, 5}, "BT": powerpc.InsnBits{6, 5}}}, // 19:0..5 289:21..30 0:31..31(///)
+ {Name: "crorc", Opcode: 0x4c000342, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"BA": powerpc.InsnBits{11, 5}, "BB": powerpc.InsnBits{16, 5}, "BT": powerpc.InsnBits{6, 5}}}, // 19:0..5 417:21..30 0:31..31(///)
+ {Name: "cror", Opcode: 0x4c000382, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"BA": powerpc.InsnBits{11, 5}, "BB": powerpc.InsnBits{16, 5}, "BT": powerpc.InsnBits{6, 5}}}, // 19:0..5 449:21..30 0:31..31(///)
+ {Name: "bclr", Opcode: 0x4c000020, Mask: 0xfc00e7ff, Fields: map[string]powerpc.InsnBits{"BH": powerpc.InsnBits{19, 2}, "BI": powerpc.InsnBits{11, 5}, "BO": powerpc.InsnBits{6, 5}}}, // 19:0..5 0:16..18(///) 16:21..30 0:31(LK)
+ {Name: "bclrl", Opcode: 0x4c000021, Mask: 0xfc00e7ff, Fields: map[string]powerpc.InsnBits{"BH": powerpc.InsnBits{19, 2}, "BI": powerpc.InsnBits{11, 5}, "BO": powerpc.InsnBits{6, 5}}}, // 19:0..5 0:16..18(///) 16:21..30 1:31(LK)
+ {Name: "bcctr", Opcode: 0x4c000420, Mask: 0xfc00e7ff, Fields: map[string]powerpc.InsnBits{"BH": powerpc.InsnBits{19, 2}, "BI": powerpc.InsnBits{11, 5}, "BO": powerpc.InsnBits{6, 5}}}, // 19:0..5 0:16..18(///) 528:21..30 0:31(LK)
+ {Name: "bcctrl", Opcode: 0x4c000421, Mask: 0xfc00e7ff, Fields: map[string]powerpc.InsnBits{"BH": powerpc.InsnBits{19, 2}, "BI": powerpc.InsnBits{11, 5}, "BO": powerpc.InsnBits{6, 5}}}, // 19:0..5 0:16..18(///) 528:21..30 1:31(LK)
+ {Name: "bctar", Opcode: 0x4c000460, Mask: 0xfc00e7ff, Fields: map[string]powerpc.InsnBits{"BH": powerpc.InsnBits{19, 2}, "BI": powerpc.InsnBits{11, 5}, "BO": powerpc.InsnBits{6, 5}}}, // 19:0..5 0:16..18(///) 560:21..30 0:31(LK)
+ {Name: "bctarl", Opcode: 0x4c000461, Mask: 0xfc00e7ff, Fields: map[string]powerpc.InsnBits{"BH": powerpc.InsnBits{19, 2}, "BI": powerpc.InsnBits{11, 5}, "BO": powerpc.InsnBits{6, 5}}}, // 19:0..5 0:16..18(///) 560:21..30 1:31(LK)
+ {Name: "rfid", Opcode: 0x4c000024, Mask: 0xffffffff, Priv: true, Fields: map[string]powerpc.InsnBits{}}, // 19:0..5 0:6..10(///) 0:11..15(///) 0:16..20(///) 18:21..30 0:31..31(///)
+ {Name: "rfscv", Opcode: 0x4c0000a4, Mask: 0xffffffff, Priv: true, Fields: map[string]powerpc.InsnBits{}}, // 19:0..5 0:6..10(///) 0:11..15(///) 0:16..20(///) 82:21..30 0:31..31(///)
+ {Name: "rfebb", Opcode: 0x4c000124, Mask: 0xfffff7ff, Fields: map[string]powerpc.InsnBits{"S": powerpc.InsnBits{20, 1}}}, // 19:0..5 0:6..10(///) 0:11..15(///) 0:16..19(///) 146:21..30 0:31..31(///)
+ {Name: "hrfid", Opcode: 0x4c000224, Mask: 0xffffffff, Priv: true, Fields: map[string]powerpc.InsnBits{}}, // 19:0..5 0:6..10(///) 0:11..15(///) 0:16..20(///) 274:21..30 0:31..31(///)
+ {Name: "stop", Opcode: 0x4c000172, Mask: 0xffffffff, Priv: true, Fields: map[string]powerpc.InsnBits{}}, // 19:0..5 0:6..10(///) 0:11..15(///) 0:16..20(///) 370:21..31
+ {Name: "isync", Opcode: 0x4c00012c, Mask: 0xffffffff, Fields: map[string]powerpc.InsnBits{}}, // 19:0..5 0:6..10(///) 0:11..15(///) 0:16..20(///) 150:21..30 0:31..31(///)
+ {Name: "rlwimi", Opcode: 0x50000000, Mask: 0xfc000001, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 5}, "ME": powerpc.InsnBits{26, 5}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 5}}}, // 20:0..5 0:31(RC)
+ {Name: "rlwimi.", Opcode: 0x50000001, Mask: 0xfc000001, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 5}, "ME": powerpc.InsnBits{26, 5}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 5}}}, // 20:0..5 1:31(RC)
+ {Name: "rlwinm", Opcode: 0x54000000, Mask: 0xfc000001, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 5}, "ME": powerpc.InsnBits{26, 5}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 5}}}, // 21:0..5 0:31(RC)
+ {Name: "rlwinm.", Opcode: 0x54000001, Mask: 0xfc000001, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 5}, "ME": powerpc.InsnBits{26, 5}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 5}}}, // 21:0..5 1:31(RC)
+ {Name: "rlwnm", Opcode: 0x5c000000, Mask: 0xfc000001, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 5}, "ME": powerpc.InsnBits{26, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 23:0..5 0:31(RC)
+ {Name: "rlwnm.", Opcode: 0x5c000001, Mask: 0xfc000001, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 5}, "ME": powerpc.InsnBits{26, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 23:0..5 1:31(RC)
+ {Name: "ori", Opcode: 0x60000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "UI": powerpc.InsnBits{16, 16}}}, // 24:0..5
+ {Name: "oris", Opcode: 0x64000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "UI": powerpc.InsnBits{16, 16}}}, // 25:0..5
+ {Name: "xnop", Opcode: 0x68000000, Mask: 0xFFFFFFFF},
+ {Name: "xori", Opcode: 0x68000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "UI": powerpc.InsnBits{16, 16}}}, // 26:0..5
+ {Name: "xoris", Opcode: 0x6c000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "UI": powerpc.InsnBits{16, 16}}}, // 27:0..5
+ {Name: "andi.", Opcode: 0x70000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "UI": powerpc.InsnBits{16, 16}}}, // 28:0..5
+ {Name: "andis.", Opcode: 0x74000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "UI": powerpc.InsnBits{16, 16}}}, // 29:0..5
+ {Name: "rldicl", Opcode: 0x78000000, Mask: 0xfc00001d, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 6}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{30, 1}}}, // 30:0..5 0:27..29 0:31(RC)
+ {Name: "rldicl.", Opcode: 0x78000001, Mask: 0xfc00001d, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 6}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{30, 1}}}, // 30:0..5 0:27..29 1:31(RC)
+ {Name: "rldicr", Opcode: 0x78000004, Mask: 0xfc00001d, Fields: map[string]powerpc.InsnBits{"ME": powerpc.InsnBits{21, 6}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{30, 1}}}, // 30:0..5 1:27..29 0:31(RC)
+ {Name: "rldicr.", Opcode: 0x78000005, Mask: 0xfc00001d, Fields: map[string]powerpc.InsnBits{"ME": powerpc.InsnBits{21, 6}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{30, 1}}}, // 30:0..5 1:27..29 1:31(RC)
+ {Name: "rldic", Opcode: 0x78000008, Mask: 0xfc00001d, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 6}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{30, 1}}}, // 30:0..5 2:27..29 0:31(RC)
+ {Name: "rldic.", Opcode: 0x78000009, Mask: 0xfc00001d, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 6}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{30, 1}}}, // 30:0..5 2:27..29 1:31(RC)
+ {Name: "rldimi", Opcode: 0x7800000c, Mask: 0xfc00001d, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 6}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{30, 1}}}, // 30:0..5 3:27..29 0:31(RC)
+ {Name: "rldimi.", Opcode: 0x7800000d, Mask: 0xfc00001d, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 6}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{30, 1}}}, // 30:0..5 3:27..29 1:31(RC)
+ {Name: "rldcl", Opcode: 0x78000010, Mask: 0xfc00001f, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 6}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 30:0..5 8:27..30 0:31(RC)
+ {Name: "rldcl.", Opcode: 0x78000011, Mask: 0xfc00001f, Fields: map[string]powerpc.InsnBits{"MB": powerpc.InsnBits{21, 6}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 30:0..5 8:27..30 1:31(RC)
+ {Name: "rldcr", Opcode: 0x78000012, Mask: 0xfc00001f, Fields: map[string]powerpc.InsnBits{"ME": powerpc.InsnBits{21, 6}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 30:0..5 9:27..30 0:31(RC)
+ {Name: "rldcr.", Opcode: 0x78000013, Mask: 0xfc00001f, Fields: map[string]powerpc.InsnBits{"ME": powerpc.InsnBits{21, 6}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 30:0..5 9:27..30 1:31(RC)
+ {Name: "cmp", Opcode: 0x7c000000, Mask: 0xfc4007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "L": powerpc.InsnBits{10, 1}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:9..9(///) 0:21..30 0:31..31(///)
+ {Name: "cmpl", Opcode: 0x7c000040, Mask: 0xfc4007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "L": powerpc.InsnBits{10, 1}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:9..9(///) 32:21..30 0:31..31(///)
+ {Name: "setb", Opcode: 0x7c000100, Mask: 0xfc03ffff, Fields: map[string]powerpc.InsnBits{"BFA": powerpc.InsnBits{11, 3}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:14..15(///) 0:16..20(///) 128:21..30 0:31..31(///)
+ {Name: "cmprb", Opcode: 0x7c000000, Mask: 0xfc40ffff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "RA": powerpc.InsnBits{10, 1}, "RB": powerpc.InsnBits{11, 5}}}, // 31:0..5 0:9..9(///) 192:16..20 0:21..31(///)
+ {Name: "cmpeqb", Opcode: 0x7c0001c0, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:9..10(///) 224:21..30 0:31..31(///)
+ {Name: "mcrxrx", Opcode: 0x7c000480, Mask: 0xfc7fffff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}}}, // 31:0..5 0:9..10(///) 0:11..15(///) 0:16..20(///) 576:21..30 0:31..31(///)
+ {Name: "tw", Opcode: 0x7c000008, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "TO": powerpc.InsnBits{6, 5}}}, // 31:0..5 4:21..30 0:31..31(///)
+ {Name: "td", Opcode: 0x7c000088, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "TO": powerpc.InsnBits{6, 5}}}, // 31:0..5 68:21..30 0:31..31(///)
+ {Name: "lvsl", Opcode: 0x7c00000c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 31:0..5 6:21..30 0:31..31(///)
+ {Name: "lvsr", Opcode: 0x7c00004c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 31:0..5 38:21..30 0:31..31(///)
+ {Name: "lwat", Opcode: 0x7c00048c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FC": powerpc.InsnBits{16, 5}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 582:21..30 0:31..31(///)
+ {Name: "ldat", Opcode: 0x7c0004cc, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FC": powerpc.InsnBits{16, 5}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 614:21..30 0:31..31(///)
+ {Name: "stwat", Opcode: 0x7c00058c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FC": powerpc.InsnBits{16, 5}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 710:21..30 0:31..31(///)
+ {Name: "stdat", Opcode: 0x7c0005cc, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FC": powerpc.InsnBits{16, 5}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 742:21..30 0:31..31(///)
+ {Name: "copy", Opcode: 0x7c403000, Mask: 0xffc0ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{10, 1}, "RB": powerpc.InsnBits{11, 5}}}, // 31:0..5 0:6..8(///) 1:9..9 774:16..20 0:21..31(///)
+ {Name: "cpabort", Opcode: 0x7c00068c, Mask: 0xffffffff, Fields: map[string]powerpc.InsnBits{}}, // 31:0..5 0:6..10(///) 0:11..15(///) 0:16..20(///) 838:21..30 0:31..31(///)
+ {Name: "paste.", Opcode: 0x7c403001, Mask: 0xffc0ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{10, 1}, "RB": powerpc.InsnBits{11, 5}}}, // 31:0..5 0:6..8(///) 1:9..9 902:16..20 1:21..31
+ {Name: "lvebx", Opcode: 0x7c00000e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 31:0..5 7:21..30 0:31..31(///)
+ {Name: "lvehx", Opcode: 0x7c00004e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 31:0..5 39:21..30 0:31..31(///)
+ {Name: "lvewx", Opcode: 0x7c00008e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 31:0..5 71:21..30 0:31..31(///)
+ {Name: "lvx", Opcode: 0x7c0000ce, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 31:0..5 103:21..30 0:31..31(///)
+ {Name: "stvebx", Opcode: 0x7c00010e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "VRS": powerpc.InsnBits{6, 5}}}, // 31:0..5 135:21..30 0:31..31(///)
+ {Name: "stvehx", Opcode: 0x7c00014e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "VRS": powerpc.InsnBits{6, 5}}}, // 31:0..5 167:21..30 0:31..31(///)
+ {Name: "stvewx", Opcode: 0x7c00018e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "VRS": powerpc.InsnBits{6, 5}}}, // 31:0..5 199:21..30 0:31..31(///)
+ {Name: "stvx", Opcode: 0x7c0001ce, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "VRS": powerpc.InsnBits{6, 5}}}, // 31:0..5 231:21..30 0:31..31(///)
+ {Name: "lvxl", Opcode: 0x7c0002ce, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 31:0..5 359:21..30 0:31..31(///)
+ {Name: "stvxl", Opcode: 0x7c0003ce, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "VRS": powerpc.InsnBits{6, 5}}}, // 31:0..5 487:21..30 0:31..31(///)
+ {Name: "subfc", Opcode: 0x7c000010, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 8:22..30 0:31(RC)
+ {Name: "subfc.", Opcode: 0x7c000011, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 8:22..30 1:31(RC)
+ {Name: "subfco", Opcode: 0x7c000410, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 8:22..30 0:31(RC)
+ {Name: "subfco.", Opcode: 0x7c000411, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 8:22..30 1:31(RC)
+ {Name: "subf", Opcode: 0x7c000050, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 40:22..30 0:31(RC)
+ {Name: "subf.", Opcode: 0x7c000051, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 40:22..30 1:31(RC)
+ {Name: "subfo", Opcode: 0x7c000450, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 40:22..30 0:31(RC)
+ {Name: "subfo.", Opcode: 0x7c000451, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 40:22..30 1:31(RC)
+ {Name: "neg", Opcode: 0x7c0000d0, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 0:21(OE) 104:22..30 0:31(RC)
+ {Name: "neg.", Opcode: 0x7c0000d1, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 0:21(OE) 104:22..30 1:31(RC)
+ {Name: "nego", Opcode: 0x7c0004d0, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 1:21(OE) 104:22..30 0:31(RC)
+ {Name: "nego.", Opcode: 0x7c0004d1, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 1:21(OE) 104:22..30 1:31(RC)
+ {Name: "subfe", Opcode: 0x7c000110, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 136:22..30 0:31(RC)
+ {Name: "subfe.", Opcode: 0x7c000111, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 136:22..30 1:31(RC)
+ {Name: "subfeo", Opcode: 0x7c000510, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 136:22..30 0:31(RC)
+ {Name: "subfeo.", Opcode: 0x7c000511, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 136:22..30 1:31(RC)
+ {Name: "subfze", Opcode: 0x7c000190, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 0:21(OE) 200:22..30 0:31(RC)
+ {Name: "subfze.", Opcode: 0x7c000191, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 0:21(OE) 200:22..30 1:31(RC)
+ {Name: "subfzeo", Opcode: 0x7c000590, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 1:21(OE) 200:22..30 0:31(RC)
+ {Name: "subfzeo.", Opcode: 0x7c000591, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 1:21(OE) 200:22..30 1:31(RC)
+ {Name: "subfme", Opcode: 0x7c0001d0, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 0:21(OE) 232:22..30 0:31(RC)
+ {Name: "subfme.", Opcode: 0x7c0001d1, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 0:21(OE) 232:22..30 1:31(RC)
+ {Name: "subfmeo", Opcode: 0x7c0005d0, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 1:21(OE) 232:22..30 0:31(RC)
+ {Name: "subfmeo.", Opcode: 0x7c0005d1, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 1:21(OE) 232:22..30 1:31(RC)
+ {Name: "mulhdu", Opcode: 0x7c000012, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21..21(///) 9:22..30 0:31(RC)
+ {Name: "mulhdu.", Opcode: 0x7c000013, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21..21(///) 9:22..30 1:31(RC)
+ {Name: "mulhd", Opcode: 0x7c000092, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21..21(///) 73:22..30 0:31(RC)
+ {Name: "mulhd.", Opcode: 0x7c000093, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21..21(///) 73:22..30 1:31(RC)
+ {Name: "mulld", Opcode: 0x7c0001d2, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 233:22..30 0:31(RC)
+ {Name: "mulld.", Opcode: 0x7c0001d3, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 233:22..30 1:31(RC)
+ {Name: "mulldo", Opcode: 0x7c0005d2, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 233:22..30 0:31(RC)
+ {Name: "mulldo.", Opcode: 0x7c0005d3, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 233:22..30 1:31(RC)
+ {Name: "modud", Opcode: 0x7c000212, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 265:21..30 0:31..31(///)
+ {Name: "divdeu", Opcode: 0x7c000312, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 393:22..30 0:31(RC)
+ {Name: "divdeu.", Opcode: 0x7c000313, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 393:22..30 1:31(RC)
+ {Name: "divdeuo", Opcode: 0x7c000712, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 393:22..30 0:31(RC)
+ {Name: "divdeuo.", Opcode: 0x7c000713, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 393:22..30 1:31(RC)
+ {Name: "divde", Opcode: 0x7c000352, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 425:22..30 0:31(RC)
+ {Name: "divde.", Opcode: 0x7c000353, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 425:22..30 1:31(RC)
+ {Name: "divdeo", Opcode: 0x7c000752, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 425:22..30 0:31(RC)
+ {Name: "divdeo.", Opcode: 0x7c000753, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 425:22..30 1:31(RC)
+ {Name: "divdu", Opcode: 0x7c000392, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 457:22..30 0:31(RC)
+ {Name: "divdu.", Opcode: 0x7c000393, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 457:22..30 1:31(RC)
+ {Name: "divduo", Opcode: 0x7c000792, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 457:22..30 0:31(RC)
+ {Name: "divduo.", Opcode: 0x7c000793, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 457:22..30 1:31(RC)
+ {Name: "divd", Opcode: 0x7c0003d2, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 489:22..30 0:31(RC)
+ {Name: "divd.", Opcode: 0x7c0003d3, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 489:22..30 1:31(RC)
+ {Name: "divdo", Opcode: 0x7c0007d2, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 489:22..30 0:31(RC)
+ {Name: "divdo.", Opcode: 0x7c0007d3, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 489:22..30 1:31(RC)
+ {Name: "modsd", Opcode: 0x7c000612, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 777:21..30 0:31..31(///)
+ {Name: "addc", Opcode: 0x7c000014, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 10:22..30 0:31(RC)
+ {Name: "addc.", Opcode: 0x7c000015, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 10:22..30 1:31(RC)
+ {Name: "addco", Opcode: 0x7c000414, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 10:22..30 0:31(RC)
+ {Name: "addco.", Opcode: 0x7c000415, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 10:22..30 1:31(RC)
+ {Name: "addg6s", Opcode: 0x7c000094, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21..21(///) 74:22..30 0:31..31(///)
+ {Name: "adde", Opcode: 0x7c000114, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 138:22..30 0:31(RC)
+ {Name: "adde.", Opcode: 0x7c000115, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 138:22..30 1:31(RC)
+ {Name: "addeo", Opcode: 0x7c000514, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 138:22..30 0:31(RC)
+ {Name: "addeo.", Opcode: 0x7c000515, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 138:22..30 1:31(RC)
+ {Name: "addex", Opcode: 0x7c000154, Mask: 0xfc0001ff, Fields: map[string]powerpc.InsnBits{"CY": powerpc.InsnBits{21, 2}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 170:23..30 0:31..31(///)
+ {Name: "addze", Opcode: 0x7c000194, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 0:21(OE) 202:22..30 0:31(RC)
+ {Name: "addze.", Opcode: 0x7c000195, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 0:21(OE) 202:22..30 1:31(RC)
+ {Name: "addzeo", Opcode: 0x7c000594, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 1:21(OE) 202:22..30 0:31(RC)
+ {Name: "addzeo.", Opcode: 0x7c000595, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 1:21(OE) 202:22..30 1:31(RC)
+ {Name: "addme", Opcode: 0x7c0001d4, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 0:21(OE) 234:22..30 0:31(RC)
+ {Name: "addme.", Opcode: 0x7c0001d5, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 0:21(OE) 234:22..30 1:31(RC)
+ {Name: "addmeo", Opcode: 0x7c0005d4, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 1:21(OE) 234:22..30 0:31(RC)
+ {Name: "addmeo.", Opcode: 0x7c0005d5, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 1:21(OE) 234:22..30 1:31(RC)
+ {Name: "add", Opcode: 0x7c000214, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 266:22..30 0:31(RC)
+ {Name: "add.", Opcode: 0x7c000215, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 266:22..30 1:31(RC)
+ {Name: "addo", Opcode: 0x7c000614, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 266:22..30 0:31(RC)
+ {Name: "addo.", Opcode: 0x7c000615, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 266:22..30 1:31(RC)
+ {Name: "mulhwu", Opcode: 0x7c000016, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21..21(///) 11:22..30 0:31(RC)
+ {Name: "mulhwu.", Opcode: 0x7c000017, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21..21(///) 11:22..30 1:31(RC)
+ {Name: "mulhw", Opcode: 0x7c000096, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21..21(///) 75:22..30 0:31(RC)
+ {Name: "mulhw.", Opcode: 0x7c000097, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21..21(///) 75:22..30 1:31(RC)
+ {Name: "mullw", Opcode: 0x7c0001d6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 235:22..30 0:31(RC)
+ {Name: "mullw.", Opcode: 0x7c0001d7, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 235:22..30 1:31(RC)
+ {Name: "mullwo", Opcode: 0x7c0005d6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 235:22..30 0:31(RC)
+ {Name: "mullwo.", Opcode: 0x7c0005d7, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 235:22..30 1:31(RC)
+ {Name: "moduw", Opcode: 0x7c000216, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 267:21..30 0:31..31(///)
+ {Name: "divweu", Opcode: 0x7c000316, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 395:22..30 0:31(RC)
+ {Name: "divweu.", Opcode: 0x7c000317, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 395:22..30 1:31(RC)
+ {Name: "divweuo", Opcode: 0x7c000716, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 395:22..30 0:31(RC)
+ {Name: "divweuo.", Opcode: 0x7c000717, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 395:22..30 1:31(RC)
+ {Name: "divwe", Opcode: 0x7c000356, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 427:22..30 0:31(RC)
+ {Name: "divwe.", Opcode: 0x7c000357, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 427:22..30 1:31(RC)
+ {Name: "divweo", Opcode: 0x7c000756, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 427:22..30 0:31(RC)
+ {Name: "divweo.", Opcode: 0x7c000757, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 427:22..30 1:31(RC)
+ {Name: "divwu", Opcode: 0x7c000396, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 459:22..30 0:31(RC)
+ {Name: "divwu.", Opcode: 0x7c000397, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 459:22..30 1:31(RC)
+ {Name: "divwuo", Opcode: 0x7c000796, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 459:22..30 0:31(RC)
+ {Name: "divwuo.", Opcode: 0x7c000797, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 459:22..30 1:31(RC)
+ {Name: "divw", Opcode: 0x7c0003d6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 491:22..30 0:31(RC)
+ {Name: "divw.", Opcode: 0x7c0003d7, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:21(OE) 491:22..30 1:31(RC)
+ {Name: "divwo", Opcode: 0x7c0007d6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 491:22..30 0:31(RC)
+ {Name: "divwo.", Opcode: 0x7c0007d7, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:21(OE) 491:22..30 1:31(RC)
+ {Name: "modsw", Opcode: 0x7c000616, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 779:21..30 0:31..31(///)
+ {Name: "lxsiwzx", Opcode: 0x7c000018, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 12:21..30
+ {Name: "lxsiwax", Opcode: 0x7c000098, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 76:21..30
+ {Name: "stxsiwx", Opcode: 0x7c000118, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 140:21..30
+ {Name: "lxvx", Opcode: 0x7c000218, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 4:21..24 0:25..25(///) 12:26..30
+ {Name: "lxvdsx", Opcode: 0x7c000298, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 332:21..30
+ {Name: "lxvwsx", Opcode: 0x7c0002d8, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 364:21..30
+ {Name: "stxvx", Opcode: 0x7c000318, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 396:21..30
+ {Name: "lxsspx", Opcode: 0x7c000418, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 524:21..30
+ {Name: "lxsdx", Opcode: 0x7c000498, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 588:21..30
+ {Name: "stxsspx", Opcode: 0x7c000518, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 652:21..30
+ {Name: "stxsdx", Opcode: 0x7c000598, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 716:21..30
+ {Name: "lxvw4x", Opcode: 0x7c000618, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 780:21..30
+ {Name: "lxvh8x", Opcode: 0x7c000658, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 812:21..30
+ {Name: "lxvd2x", Opcode: 0x7c000698, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 844:21..30
+ {Name: "lxvb16x", Opcode: 0x7c0006d8, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 876:21..30
+ {Name: "stxvw4x", Opcode: 0x7c000718, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 908:21..30
+ {Name: "stxvh8x", Opcode: 0x7c000758, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 940:21..30
+ {Name: "stxvd2x", Opcode: 0x7c000798, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 972:21..30
+ {Name: "stxvb16x", Opcode: 0x7c0007d8, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 1004:21..30
+ {Name: "lxvl", Opcode: 0x7c00021a, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 269:21..30
+ {Name: "lxvll", Opcode: 0x7c00025a, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 301:21..30
+ {Name: "stxvl", Opcode: 0x7c00031a, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 397:21..30
+ {Name: "stxvll", Opcode: 0x7c00035a, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 429:21..30
+ {Name: "lxsibzx", Opcode: 0x7c00061a, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 781:21..30
+ {Name: "lxsihzx", Opcode: 0x7c00065a, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 813:21..30
+ {Name: "stxsibx", Opcode: 0x7c00071a, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 909:21..30
+ {Name: "stxsihx", Opcode: 0x7c00075a, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 941:21..30
+ {Name: "msgsndp", Opcode: 0x7c00011c, Mask: 0xffff07ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:6..10(///) 0:11..15(///) 142:21..30 0:31..31(///)
+ {Name: "msgclrp", Opcode: 0x7c00015c, Mask: 0xffff07ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:6..10(///) 0:11..15(///) 174:21..30 0:31..31(///)
+ {Name: "msgsnd", Opcode: 0x7c00019c, Mask: 0xffff07ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:6..10(///) 0:11..15(///) 206:21..30 0:31..31(///)
+ {Name: "msgclr", Opcode: 0x7c0001dc, Mask: 0xffff07ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:6..10(///) 0:11..15(///) 238:21..30 0:31..31(///)
+ {Name: "mfbhrbe", Opcode: 0x7c00025c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"BHRBE": powerpc.InsnBits{11, 10}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 302:21..30 0:31..31(///)
+ {Name: "clrbhrb", Opcode: 0x7c00035c, Mask: 0xffffffff, Fields: map[string]powerpc.InsnBits{}}, // 31:0..5 0:6..10(///) 0:11..15(///) 0:16..20(///) 430:21..30 0:31..31(///)
+ {Name: "tend.", Opcode: 0x7c007001, Mask: 0xfdffffff, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{6, 1}}}, // 31:0..5 0:7..9(///) 0:10..10(///) 0:11..15(///) 686:16..20 1:21..31
+ {Name: "tcheck", Opcode: 0x7c00059c, Mask: 0xfc7fffff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}}}, // 31:0..5 0:9..10(///) 0:11..15(///) 0:16..20(///) 718:21..30 0:31..31(///)
+ {Name: "tsr.", Opcode: 0x7c0005dd, Mask: 0xffdfffff, Fields: map[string]powerpc.InsnBits{"L": powerpc.InsnBits{10, 1}}}, // 31:0..5 0:6..9(///) 0:11..15(///) 0:16..20(///) 750:21..30 1:31..31
+ {Name: "tbegin.", Opcode: 0x7c00051d, Mask: 0xfddfffff, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{6, 1}, "R": powerpc.InsnBits{10, 1}}}, // 31:0..5 0:7..9(///) 0:11..15(///) 0:16..20(///) 654:21..30 1:31..31
+ {Name: "tabortwc.", Opcode: 0x7c00061d, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "TO": powerpc.InsnBits{6, 5}}}, // 31:0..5 782:21..30 1:31..31
+ {Name: "tabortdc.", Opcode: 0x7c00065d, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "TO": powerpc.InsnBits{6, 5}}}, // 31:0..5 814:21..30 1:31..31
+ {Name: "tabortwci.", Opcode: 0x7c00069d, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "SI": powerpc.InsnBits{16, 5}, "TO": powerpc.InsnBits{6, 5}}}, // 31:0..5 846:21..30 1:31..31
+ {Name: "tabortdci.", Opcode: 0x7c0006dd, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "SI": powerpc.InsnBits{16, 5}, "TO": powerpc.InsnBits{6, 5}}}, // 31:0..5 878:21..30 1:31..31
+ {Name: "tabort.", Opcode: 0x7c00071d, Mask: 0xffe0ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}}}, // 31:0..5 0:6..10(///) 0:16..20(///) 910:21..30 1:31..31
+ {Name: "treclaim.", Opcode: 0x7c00075d, Mask: 0xffe0ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}}}, // 31:0..5 0:6..10(///) 0:16..20(///) 942:21..30 1:31..31
+ {Name: "trechkpt.", Opcode: 0x7c0007dd, Mask: 0xffffffff, Fields: map[string]powerpc.InsnBits{}}, // 31:0..5 0:6..10(///) 0:11..15(///) 0:16..20(///) 1006:21..30 1:31..31
+ {Name: "isel", Opcode: 0x7c00001e, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"BC": powerpc.InsnBits{21, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 15:26..30 0:31..31(///)
+ {Name: "mtcrf", Opcode: 0x7c000120, Mask: 0xfc100fff, Fields: map[string]powerpc.InsnBits{"FXM": powerpc.InsnBits{12, 8}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..11 0:20..20(///) 144:21..30 0:31..31(///)
+ {Name: "mtocrf", Opcode: 0x7c100120, Mask: 0xfc100fff, Fields: map[string]powerpc.InsnBits{"FXM": powerpc.InsnBits{12, 8}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:11..11 0:20..20(///) 144:21..30 0:31..31(///)
+ {Name: "mtmsr", Opcode: 0x7c000092, Mask: 0xfc1effff, Priv: true, Fields: map[string]powerpc.InsnBits{"L": powerpc.InsnBits{15, 1}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..14(///) 0:16..20(///) 146:21..31
+ {Name: "mtmsrd", Opcode: 0x7c000164, Mask: 0xfc1effff, Priv: true, Fields: map[string]powerpc.InsnBits{"L": powerpc.InsnBits{15, 1}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..14(///) 0:16..20(///) 178:21..30 0:31..31(///)
+ {Name: "tlbiel", Opcode: 0x7c000112, Mask: 0xfc1007ff, M64: true, Priv: true, Fields: map[string]powerpc.InsnBits{"PRS": powerpc.InsnBits{14, 1}, "R": powerpc.InsnBits{15, 1}, "RB": powerpc.InsnBits{16, 5}, "RIC": powerpc.InsnBits{12, 2}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..11(///) 274:21..31
+ {Name: "tlbie", Opcode: 0x7c000132, Mask: 0xfc1007ff, M64: true, Priv: true, Fields: map[string]powerpc.InsnBits{"PRS": powerpc.InsnBits{14, 1}, "R": powerpc.InsnBits{15, 1}, "RB": powerpc.InsnBits{16, 5}, "RIC": powerpc.InsnBits{12, 2}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..11(///) 306:21..31
+ {Name: "slbsync", Opcode: 0x7c0002a4, Mask: 0xffffffff, Priv: true, Fields: map[string]powerpc.InsnBits{}}, // 31:0..5 0:6..10(///) 0:11..15(///) 0:16..20(///) 338:21..30 0:31..31(///)
+ {Name: "slbmte", Opcode: 0x7c000324, Mask: 0xfc1f07ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..15(///) 402:21..30 0:31..31(///)
+ {Name: "slbie", Opcode: 0x7c000364, Mask: 0xffff07ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:6..10(///) 0:11..15(///) 434:21..30 0:31..31(///)
+ {Name: "slbieg", Opcode: 0x7c0003a4, Mask: 0xfc1f07ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..15(///) 466:21..30 0:31..31(///)
+ {Name: "slbia", Opcode: 0x7c0003e4, Mask: 0xff1fffff, Priv: true, Fields: map[string]powerpc.InsnBits{"IH": powerpc.InsnBits{8, 3}}}, // 31:0..5 0:6..7(///) 0:11..15(///) 0:16..20(///) 498:21..30 0:31..31(///)
+ {Name: "slbiag", Opcode: 0x7c0006a4, Mask: 0xfc1fffff, Priv: true, Fields: map[string]powerpc.InsnBits{"RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..15(///) 0:16..20(///) 850:21..30 0:31..31(///)
+ {Name: "mfcr", Opcode: 0x7c000026, Mask: 0xfc1fffff, Fields: map[string]powerpc.InsnBits{"RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..11 0:12..20(///) 19:21..30 0:31..31(///)
+ {Name: "mfocrf", Opcode: 0x7c100026, Mask: 0xfc100fff, Fields: map[string]powerpc.InsnBits{"FXM": powerpc.InsnBits{12, 8}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 1:11..11 0:20..20(///) 19:21..30 0:31..31(///)
+ {Name: "mfvsrd", Opcode: 0x7c000066, Mask: 0xfc00fffe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 0:16..20(///) 51:21..30
+ {Name: "mfmsr", Opcode: 0x7c0000a6, Mask: 0xfc1fffff, Priv: true, Fields: map[string]powerpc.InsnBits{"RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..15(///) 0:16..20(///) 83:21..30 0:31..31(///)
+ {Name: "mfvsrwz", Opcode: 0x7c0000e6, Mask: 0xfc00fffe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 0:16..20(///) 115:21..30
+ {Name: "mtvsrd", Opcode: 0x7c000166, Mask: 0xfc00fffe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 0:16..20(///) 179:21..30
+ {Name: "mtvsrwa", Opcode: 0x7c0001a6, Mask: 0xfc00fffe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 0:16..20(///) 211:21..30
+ {Name: "mtvsrwz", Opcode: 0x7c0001e6, Mask: 0xfc00fffe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 0:16..20(///) 243:21..30
+ {Name: "mfvsrld", Opcode: 0x7c000266, Mask: 0xfc00fffe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{31, 1}}}, // 31:0..5 0:16..20(///) 307:21..30
+ {Name: "mfspr", Opcode: 0x7c0002a6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RT": powerpc.InsnBits{6, 5}, "SPR": powerpc.InsnBits{11, 10}}}, // 31:0..5 339:21..30 0:31..31(///)
+ {Name: "mftb", Opcode: 0x7c0002e6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RT": powerpc.InsnBits{6, 5}, "TBR": powerpc.InsnBits{11, 10}}}, // 31:0..5 371:21..30 0:31..31(///)
+ {Name: "[Phased-Out]", Opcode: 0x7c0002e6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RT": powerpc.InsnBits{6, 5}, "TBR": powerpc.InsnBits{11, 10}}}, // 31:0..5 371:21..30 0:31..31(///)
+ {Name: "mtvsrws", Opcode: 0x7c000326, Mask: 0xfc00fffe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 0:16..20(///) 403:21..30
+ {Name: "mtvsrdd", Opcode: 0x7c000366, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 31:0..5 435:21..30
+ {Name: "mtspr", Opcode: 0x7c0003a6, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RS": powerpc.InsnBits{6, 5}, "SPR": powerpc.InsnBits{11, 10}}}, // 31:0..5 467:21..30 0:31..31(///)
+ {Name: "darn", Opcode: 0x7c0005e6, Mask: 0xfc1cffff, Fields: map[string]powerpc.InsnBits{"L": powerpc.InsnBits{14, 2}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..13(///) 0:16..20(///) 755:21..30 0:31..31(///)
+ {Name: "slbmfev", Opcode: 0x7c0006a6, Mask: 0xfc1e07ff, Priv: true, Fields: map[string]powerpc.InsnBits{"L": powerpc.InsnBits{15, 1}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..14(///) 851:21..30 0:31..31(///)
+ {Name: "slbmfee", Opcode: 0x7c000726, Mask: 0xfc1e07ff, Priv: true, Fields: map[string]powerpc.InsnBits{"L": powerpc.InsnBits{15, 1}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..14(///) 915:21..30 0:31..31(///)
+ {Name: "slbfee.", Opcode: 0x7c0007a7, Mask: 0xfc1f07ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:11..15(///) 979:21..30 1:31..31
+ {Name: "lwarx", Opcode: 0x7c000028, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"EH": powerpc.InsnBits{31, 1}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 20:21..30
+ {Name: "lbarx", Opcode: 0x7c000068, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"EH": powerpc.InsnBits{31, 1}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 52:21..30
+ {Name: "ldarx", Opcode: 0x7c0000a8, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"EH": powerpc.InsnBits{31, 1}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 84:21..30
+ {Name: "lharx", Opcode: 0x7c0000e8, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"EH": powerpc.InsnBits{31, 1}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 116:21..30
+ {Name: "lqarx", Opcode: 0x7c000228, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"EH": powerpc.InsnBits{31, 1}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RTP": powerpc.InsnBits{6, 5}}}, // 31:0..5 276:21..30
+ {Name: "ldbrx", Opcode: 0x7c000428, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 532:21..30 0:31..31(///)
+ {Name: "stdbrx", Opcode: 0x7c000528, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 660:21..30 0:31..31(///)
+ {Name: "ldx", Opcode: 0x7c00002a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 21:21..30 0:31..31(///)
+ {Name: "ldux", Opcode: 0x7c00006a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 53:21..30 0:31..31(///)
+ {Name: "stdx", Opcode: 0x7c00012a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 149:21..30 0:31..31(///)
+ {Name: "stdux", Opcode: 0x7c00016a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 181:21..30 0:31..31(///)
+ {Name: "lwax", Opcode: 0x7c0002aa, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 341:21..30 0:31..31(///)
+ {Name: "lwaux", Opcode: 0x7c0002ea, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 373:21..30 0:31..31(///)
+ {Name: "lswx", Opcode: 0x7c00042a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 533:21..30 0:31..31(///)
+ {Name: "lswi", Opcode: 0x7c0004aa, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"NB": powerpc.InsnBits{16, 5}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 597:21..30 0:31..31(///)
+ {Name: "stswx", Opcode: 0x7c00052a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 661:21..30 0:31..31(///)
+ {Name: "stswi", Opcode: 0x7c0005aa, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"NB": powerpc.InsnBits{16, 5}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 725:21..30 0:31..31(///)
+ {Name: "lwzcix", Opcode: 0x7c00062a, Mask: 0xfc0007ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 789:21..30 0:31..31(///)
+ {Name: "lhzcix", Opcode: 0x7c00066a, Mask: 0xfc0007ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 821:21..30 0:31..31(///)
+ {Name: "lbzcix", Opcode: 0x7c0006aa, Mask: 0xfc0007ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 853:21..30 0:31..31(///)
+ {Name: "ldcix", Opcode: 0x7c0006ea, Mask: 0xfc0007ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 885:21..30 0:31..31(///)
+ {Name: "stwcix", Opcode: 0x7c00072a, Mask: 0xfc0007ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 917:21..30 0:31..31(///)
+ {Name: "sthcix", Opcode: 0x7c00076a, Mask: 0xfc0007ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 949:21..30 0:31..31(///)
+ {Name: "stbcix", Opcode: 0x7c0007aa, Mask: 0xfc0007ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 981:21..30 0:31..31(///)
+ {Name: "stdcix", Opcode: 0x7c0007ea, Mask: 0xfc0007ff, Priv: true, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 1013:21..30 0:31..31(///)
+ {Name: "icbt", Opcode: 0x7c00002c, Mask: 0xfe0007ff, Fields: map[string]powerpc.InsnBits{"CT": powerpc.InsnBits{7, 4}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:6..6(///) 22:21..30 0:31..31(///)
+ {Name: "dcbst", Opcode: 0x7c00006c, Mask: 0xffe007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:6..10(///) 54:21..30 0:31..31(///)
+ {Name: "dcbf", Opcode: 0x7c0000ac, Mask: 0xff8007ff, Fields: map[string]powerpc.InsnBits{"L": powerpc.InsnBits{9, 2}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:6..8(///) 86:21..30 0:31..31(///)
+ {Name: "dcbtst", Opcode: 0x7c0001ec, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "TH": powerpc.InsnBits{6, 5}}}, // 31:0..5 246:21..30 0:31..31(///)
+ {Name: "dcbt", Opcode: 0x7c00022c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "TH": powerpc.InsnBits{6, 5}}}, // 31:0..5 278:21..30 0:31..31(///)
+ {Name: "lwbrx", Opcode: 0x7c00042c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 534:21..30 0:31..31(///)
+ {Name: "tlbsync", Opcode: 0x7c00046c, Mask: 0xffffffff, Priv: true, Fields: map[string]powerpc.InsnBits{}}, // 31:0..5 0:6..10(///) 0:11..15(///) 0:16..20(///) 566:21..30 0:31..31(///)
+ {Name: "sync", Opcode: 0x7c0004ac, Mask: 0xff9fffff, Fields: map[string]powerpc.InsnBits{"L": powerpc.InsnBits{9, 2}}}, // 31:0..5 0:6..8(///) 0:11..15(///) 0:16..20(///) 598:21..30 0:31..31(///)
+ {Name: "stwbrx", Opcode: 0x7c00052c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 662:21..30 0:31..31(///)
+ {Name: "lhbrx", Opcode: 0x7c00062c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 790:21..30 0:31..31(///)
+ {Name: "eieio", Opcode: 0x7c0006ac, Mask: 0xffffffff, Fields: map[string]powerpc.InsnBits{}}, // 31:0..5 0:6..10(///) 0:11..15(///) 0:16..20(///) 854:21..30 0:31..31(///)
+ {Name: "msgsync", Opcode: 0x7c0006ec, Mask: 0xffffffff, Priv: true, Fields: map[string]powerpc.InsnBits{}}, // 31:0..5 0:6..10(///) 0:11..15(///) 0:16..20(///) 886:21..30 0:31..31(///)
+ {Name: "sthbrx", Opcode: 0x7c00072c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 918:21..30 0:31..31(///)
+ {Name: "icbi", Opcode: 0x7c0007ac, Mask: 0xffe007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:6..10(///) 982:21..30 0:31..31(///)
+ {Name: "dcbz", Opcode: 0x7c0007ec, Mask: 0xffe007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 0:6..10(///) 1014:21..30 0:31..31(///)
+ {Name: "stwcx.", Opcode: 0x7c00012d, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 150:21..30 1:31..31
+ {Name: "stqcx.", Opcode: 0x7c00016d, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RSP": powerpc.InsnBits{6, 5}}}, // 31:0..5 182:21..30 1:31..31
+ {Name: "stdcx.", Opcode: 0x7c0001ad, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 214:21..30 1:31..31
+ {Name: "stbcx.", Opcode: 0x7c00056d, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 694:21..30 1:31..31
+ {Name: "sthcx.", Opcode: 0x7c0005ad, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 726:21..30 1:31..31
+ {Name: "lwzx", Opcode: 0x7c00002e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 23:21..30 0:31..31(///)
+ {Name: "lwzux", Opcode: 0x7c00006e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 55:21..30 0:31..31(///)
+ {Name: "lbzx", Opcode: 0x7c0000ae, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 87:21..30 0:31..31(///)
+ {Name: "lbzux", Opcode: 0x7c0000ee, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 119:21..30 0:31..31(///)
+ {Name: "stwx", Opcode: 0x7c00012e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 151:21..30 0:31..31(///)
+ {Name: "stwux", Opcode: 0x7c00016e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 183:21..30 0:31..31(///)
+ {Name: "stbx", Opcode: 0x7c0001ae, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 215:21..30 0:31..31(///)
+ {Name: "stbux", Opcode: 0x7c0001ee, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 247:21..30 0:31..31(///)
+ {Name: "lhzx", Opcode: 0x7c00022e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 279:21..30 0:31..31(///)
+ {Name: "lhzux", Opcode: 0x7c00026e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 311:21..30 0:31..31(///)
+ {Name: "lhax", Opcode: 0x7c0002ae, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 343:21..30 0:31..31(///)
+ {Name: "lhaux", Opcode: 0x7c0002ee, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 31:0..5 375:21..30 0:31..31(///)
+ {Name: "sthx", Opcode: 0x7c00032e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 407:21..30 0:31..31(///)
+ {Name: "sthux", Opcode: 0x7c00036e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 439:21..30 0:31..31(///)
+ {Name: "lfsx", Opcode: 0x7c00042e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRT": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 535:21..30 0:31..31(///)
+ {Name: "lfsux", Opcode: 0x7c00046e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRT": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 567:21..30 0:31..31(///)
+ {Name: "lfdx", Opcode: 0x7c0004ae, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRT": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 599:21..30 0:31..31(///)
+ {Name: "lfdux", Opcode: 0x7c0004ee, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRT": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 631:21..30 0:31..31(///)
+ {Name: "stfsx", Opcode: 0x7c00052e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRS": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 663:21..30 0:31..31(///)
+ {Name: "stfsux", Opcode: 0x7c00056e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRS": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 695:21..30 0:31..31(///)
+ {Name: "stfdx", Opcode: 0x7c0005ae, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRS": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 727:21..30 0:31..31(///)
+ {Name: "stfdux", Opcode: 0x7c0005ee, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRS": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 759:21..30 0:31..31(///)
+ {Name: "lfdpx", Opcode: 0x7c00062e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRTP": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 791:21..30 0:31..31(///)
+ {Name: "lfiwax", Opcode: 0x7c0006ae, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRT": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 855:21..30 0:31..31(///)
+ {Name: "lfiwzx", Opcode: 0x7c0006ee, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRT": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 887:21..30 0:31..31(///)
+ {Name: "stfdpx", Opcode: 0x7c00072e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRSP": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 919:21..30 0:31..31(///)
+ {Name: "stfiwx", Opcode: 0x7c0007ae, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRS": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}}}, // 31:0..5 983:21..30 0:31..31(///)
+ {Name: "slw", Opcode: 0x7c000030, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 24:21..30 0:31(RC)
+ {Name: "slw.", Opcode: 0x7c000031, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 24:21..30 1:31(RC)
+ {Name: "srw", Opcode: 0x7c000430, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 536:21..30 0:31(RC)
+ {Name: "srw.", Opcode: 0x7c000431, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 536:21..30 1:31(RC)
+ {Name: "sraw", Opcode: 0x7c000630, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 792:21..30 0:31(RC)
+ {Name: "sraw.", Opcode: 0x7c000631, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 792:21..30 1:31(RC)
+ {Name: "srawi", Opcode: 0x7c000670, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 5}}}, // 31:0..5 824:21..30 0:31(RC)
+ {Name: "srawi.", Opcode: 0x7c000671, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 5}}}, // 31:0..5 824:21..30 1:31(RC)
+ {Name: "cntlzw", Opcode: 0x7c000034, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 26:21..30 0:31(RC)
+ {Name: "cntlzw.", Opcode: 0x7c000035, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 26:21..30 1:31(RC)
+ {Name: "cntlzd", Opcode: 0x7c000074, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 58:21..30 0:31(RC)
+ {Name: "cntlzd.", Opcode: 0x7c000075, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 58:21..30 1:31(RC)
+ {Name: "popcntb", Opcode: 0x7c0000f4, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 122:21..30 0:31..31(///)
+ {Name: "prtyw", Opcode: 0x7c000134, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 154:21..30 0:31..31(///)
+ {Name: "prtyd", Opcode: 0x7c000174, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 186:21..30 0:31..31(///)
+ {Name: "cdtbcd", Opcode: 0x7c000234, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 282:21..30 0:31..31(///)
+ {Name: "cbcdtd", Opcode: 0x7c000274, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 314:21..30 0:31..31(///)
+ {Name: "popcntw", Opcode: 0x7c0002f4, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 378:21..30 0:31..31(///)
+ {Name: "popcntd", Opcode: 0x7c0003f4, Mask: 0xfc00fffe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RC": powerpc.InsnBits{31, 1}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 506:21..30
+ {Name: "cnttzw", Opcode: 0x7c000434, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 538:21..30 0:31(RC)
+ {Name: "cnttzw.", Opcode: 0x7c000435, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 538:21..30 1:31(RC)
+ {Name: "cnttzd", Opcode: 0x7c000474, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 570:21..30 0:31(RC)
+ {Name: "cnttzd.", Opcode: 0x7c000475, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 570:21..30 1:31(RC)
+ {Name: "srad", Opcode: 0x7c000634, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 794:21..30 0:31(RC)
+ {Name: "srad.", Opcode: 0x7c000635, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 794:21..30 1:31(RC)
+ {Name: "sradi", Opcode: 0x7c000674, Mask: 0xfc0007fd, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{30, 1}}}, // 31:0..5 413:21..29 0:31(RC)
+ {Name: "sradi.", Opcode: 0x7c000675, Mask: 0xfc0007fd, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{30, 1}}}, // 31:0..5 413:21..29 1:31(RC)
+ {Name: "extswsli", Opcode: 0x7c0006f4, Mask: 0xfc0007fd, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{30, 1}}}, // 31:0..5 445:21..29 0:31(RC)
+ {Name: "extswsli.", Opcode: 0x7c0006f5, Mask: 0xfc0007fd, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{30, 1}}}, // 31:0..5 445:21..29 1:31(RC)
+ {Name: "extsh", Opcode: 0x7c000734, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 922:21..30 0:31(RC)
+ {Name: "extsh.", Opcode: 0x7c000735, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 922:21..30 1:31(RC)
+ {Name: "extsb", Opcode: 0x7c000774, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 954:21..30 0:31(RC)
+ {Name: "extsb.", Opcode: 0x7c000775, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 954:21..30 1:31(RC)
+ {Name: "extsw", Opcode: 0x7c0007b4, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 986:21..30 0:31(RC)
+ {Name: "extsw.", Opcode: 0x7c0007b5, Mask: 0xfc00ffff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 0:16..20(///) 986:21..30 1:31(RC)
+ {Name: "sld", Opcode: 0x7c000036, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 27:21..30 0:31(RC)
+ {Name: "sld.", Opcode: 0x7c000037, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 27:21..30 1:31(RC)
+ {Name: "srd", Opcode: 0x7c000436, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 539:21..30 0:31(RC)
+ {Name: "srd.", Opcode: 0x7c000437, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 539:21..30 1:31(RC)
+ {Name: "and", Opcode: 0x7c000038, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 28:21..30 0:31(RC)
+ {Name: "and.", Opcode: 0x7c000039, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 28:21..30 1:31(RC)
+ {Name: "andc", Opcode: 0x7c000078, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 60:21..30 0:31(RC)
+ {Name: "andc.", Opcode: 0x7c000079, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 60:21..30 1:31(RC)
+ {Name: "nor", Opcode: 0x7c0000f8, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 124:21..30 0:31(RC)
+ {Name: "nor.", Opcode: 0x7c0000f9, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 124:21..30 1:31(RC)
+ {Name: "bpermd", Opcode: 0x7c0000fc, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 252:21..31
+ {Name: "eqv", Opcode: 0x7c000238, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 284:21..30 0:31(RC)
+ {Name: "eqv.", Opcode: 0x7c000239, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 284:21..30 1:31(RC)
+ {Name: "xor", Opcode: 0x7c000278, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 316:21..30 0:31(RC)
+ {Name: "xor.", Opcode: 0x7c000279, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 316:21..30 1:31(RC)
+ {Name: "orc", Opcode: 0x7c000338, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 412:21..30 0:31(RC)
+ {Name: "orc.", Opcode: 0x7c000339, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 412:21..30 1:31(RC)
+ {Name: "or", Opcode: 0x7c000378, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 444:21..30 0:31(RC)
+ {Name: "or.", Opcode: 0x7c000379, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 444:21..30 1:31(RC)
+ {Name: "nand", Opcode: 0x7c0003b8, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 476:21..30 0:31(RC)
+ {Name: "nand.", Opcode: 0x7c0003b9, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 476:21..30 1:31(RC)
+ {Name: "cmpb", Opcode: 0x7c0003f8, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 31:0..5 508:21..30 0:31..31(///)
+ {Name: "wait", Opcode: 0x7c00003c, Mask: 0xff9fffff, Fields: map[string]powerpc.InsnBits{"WC": powerpc.InsnBits{9, 2}}}, // 31:0..5 0:6..8(///) 0:11..15(///) 0:16..20(///) 30:21..30 0:31..31(///)
+ {Name: "lwz", Opcode: 0x80000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 32:0..5
+ {Name: "lwzu", Opcode: 0x84000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 33:0..5
+ {Name: "lbz", Opcode: 0x88000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 34:0..5
+ {Name: "lbzu", Opcode: 0x8c000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 35:0..5
+ {Name: "stw", Opcode: 0x90000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 36:0..5
+ {Name: "stwu", Opcode: 0x94000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 37:0..5
+ {Name: "stb", Opcode: 0x98000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 38:0..5
+ {Name: "stbu", Opcode: 0x9c000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 39:0..5
+ {Name: "lhz", Opcode: 0xa0000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 40:0..5
+ {Name: "lhzu", Opcode: 0xa4000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 41:0..5
+ {Name: "lha", Opcode: 0xa8000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 42:0..5
+ {Name: "lhau", Opcode: 0xac000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 43:0..5
+ {Name: "sth", Opcode: 0xb0000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 44:0..5
+ {Name: "sthu", Opcode: 0xb4000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 45:0..5
+ {Name: "lmw", Opcode: 0xb8000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 46:0..5
+ {Name: "stmw", Opcode: 0xbc000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 47:0..5
+ {Name: "lfs", Opcode: 0xc0000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "FRT": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}}}, // 48:0..5
+ {Name: "lfsu", Opcode: 0xc4000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "FRT": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}}}, // 49:0..5
+ {Name: "lfd", Opcode: 0xc8000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "FRT": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}}}, // 50:0..5
+ {Name: "lfdu", Opcode: 0xcc000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "FRT": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}}}, // 51:0..5
+ {Name: "stfs", Opcode: 0xd0000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "FRS": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}}}, // 52:0..5
+ {Name: "stfsu", Opcode: 0xd4000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "FRS": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}}}, // 53:0..5
+ {Name: "stfd", Opcode: 0xd8000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "FRS": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}}}, // 54:0..5
+ {Name: "stfdu", Opcode: 0xdc000000, Mask: 0xfc000000, Fields: map[string]powerpc.InsnBits{"D": powerpc.InsnBits{16, 16}, "FRS": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}}}, // 55:0..5
+ {Name: "lq", Opcode: 0xe0000000, Mask: 0xfc00000f, Fields: map[string]powerpc.InsnBits{"DQ": powerpc.InsnBits{16, 12}, "RA": powerpc.InsnBits{11, 5}, "RTP": powerpc.InsnBits{6, 5}}}, // 56:0..5 0:28..31(///)
+ {Name: "lfdp", Opcode: 0xe4000000, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"DS": powerpc.InsnBits{16, 14}, "FRTP": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}}}, // 57:0..5 0:30..31
+ {Name: "lxsd", Opcode: 0xe4000002, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"DS": powerpc.InsnBits{16, 14}, "RA": powerpc.InsnBits{11, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 57:0..5 2:30..31
+ {Name: "lxssp", Opcode: 0xe4000003, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"DS": powerpc.InsnBits{16, 14}, "RA": powerpc.InsnBits{11, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 57:0..5 3:30..31
+ {Name: "ld", Opcode: 0xe8000000, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"DS": powerpc.InsnBits{16, 14}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 58:0..5 0:30..31
+ {Name: "ldu", Opcode: 0xe8000001, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"DS": powerpc.InsnBits{16, 14}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 58:0..5 1:30..31
+ {Name: "lwa", Opcode: 0xe8000002, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"DS": powerpc.InsnBits{16, 14}, "RA": powerpc.InsnBits{11, 5}, "RT": powerpc.InsnBits{6, 5}}}, // 58:0..5 2:30..31
+ {Name: "dadd", Opcode: 0xec000004, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 2:21..30 0:31(RC)
+ {Name: "dadd.", Opcode: 0xec000005, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 2:21..30 1:31(RC)
+ {Name: "dmul", Opcode: 0xec000044, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 34:21..30 0:31(RC)
+ {Name: "dmul.", Opcode: 0xec000045, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 34:21..30 1:31(RC)
+ {Name: "dscli", Opcode: 0xec000084, Mask: 0xfc0003ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRT": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 6}}}, // 59:0..5 66:22..30 0:31(RC)
+ {Name: "dscli.", Opcode: 0xec000085, Mask: 0xfc0003ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRT": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 6}}}, // 59:0..5 66:22..30 1:31(RC)
+ {Name: "dscri", Opcode: 0xec0000c4, Mask: 0xfc0003ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRT": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 6}}}, // 59:0..5 98:22..30 0:31(RC)
+ {Name: "dscri.", Opcode: 0xec0000c5, Mask: 0xfc0003ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRT": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 6}}}, // 59:0..5 98:22..30 1:31(RC)
+ {Name: "dcmpo", Opcode: 0xec000082, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}}}, // 59:0..5 0:9..10(///) 130:21..31
+ {Name: "dtstex", Opcode: 0xec000144, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}}}, // 59:0..5 0:9..10(///) 162:21..30 0:31..31(///)
+ {Name: "dtstdc", Opcode: 0xec000184, Mask: 0xfc6003ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "DCM": powerpc.InsnBits{16, 6}, "FRA": powerpc.InsnBits{11, 5}}}, // 59:0..5 0:9..10(///) 194:22..30 0:31..31(///)
+ {Name: "dtstdg", Opcode: 0xec0001c4, Mask: 0xfc6003ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "DGM": powerpc.InsnBits{16, 6}, "FRA": powerpc.InsnBits{11, 5}}}, // 59:0..5 0:9..10(///) 226:22..30 0:31..31(///)
+ {Name: "dctdp", Opcode: 0xec000204, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 258:21..30 0:31(RC)
+ {Name: "dctdp.", Opcode: 0xec000205, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 258:21..30 1:31(RC)
+ {Name: "dctfix", Opcode: 0xec000244, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 290:21..30 0:31(RC)
+ {Name: "dctfix.", Opcode: 0xec000245, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 290:21..30 1:31(RC)
+ {Name: "ddedpd", Opcode: 0xec000284, Mask: 0xfc0707ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "SP": powerpc.InsnBits{11, 2}}}, // 59:0..5 0:13..15(///) 322:21..30 0:31(RC)
+ {Name: "ddedpd.", Opcode: 0xec000285, Mask: 0xfc0707ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "SP": powerpc.InsnBits{11, 2}}}, // 59:0..5 0:13..15(///) 322:21..30 1:31(RC)
+ {Name: "dxex", Opcode: 0xec0002c4, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 354:21..30 0:31(RC)
+ {Name: "dxex.", Opcode: 0xec0002c5, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 354:21..30 1:31(RC)
+ {Name: "dsub", Opcode: 0xec000404, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 514:21..30 0:31(RC)
+ {Name: "dsub.", Opcode: 0xec000405, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 514:21..30 1:31(RC)
+ {Name: "ddiv", Opcode: 0xec000444, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 546:21..30 0:31(RC)
+ {Name: "ddiv.", Opcode: 0xec000445, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 546:21..30 1:31(RC)
+ {Name: "dcmpu", Opcode: 0xec000504, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}}}, // 59:0..5 0:9..10(///) 642:21..30 0:31..31(///)
+ {Name: "dtstsf", Opcode: 0xec000544, Mask: 0xfc4007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRA": powerpc.InsnBits{10, 6}, "FRB": powerpc.InsnBits{16, 5}}}, // 59:0..5 0:9..9(///) 674:21..30 0:31..31(///)
+ {Name: "drsp", Opcode: 0xec000604, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 770:21..30 0:31(RC)
+ {Name: "drsp.", Opcode: 0xec000605, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 770:21..30 1:31(RC)
+ {Name: "dcffix", Opcode: 0xec000644, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 802:21..30 0:31(RC)
+ {Name: "dcffix.", Opcode: 0xec000645, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 802:21..30 1:31(RC)
+ {Name: "denbcd", Opcode: 0xec000684, Mask: 0xfc0f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "S": powerpc.InsnBits{11, 1}}}, // 59:0..5 0:12..15(///) 834:21..30 0:31(RC)
+ {Name: "denbcd.", Opcode: 0xec000685, Mask: 0xfc0f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "S": powerpc.InsnBits{11, 1}}}, // 59:0..5 0:12..15(///) 834:21..30 1:31(RC)
+ {Name: "diex", Opcode: 0xec0006c4, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 866:21..30 0:31(RC)
+ {Name: "diex.", Opcode: 0xec0006c5, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 866:21..30 1:31(RC)
+ {Name: "dqua", Opcode: 0xec000006, Mask: 0xfc0001fe, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "RC": powerpc.InsnBits{31, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 59:0..5 3:23..30
+ {Name: "dqua.", Opcode: 0xec000006, Mask: 0xfc0001fe, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "RC": powerpc.InsnBits{31, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 59:0..5 3:23..30
+ {Name: "drrnd", Opcode: 0xec000046, Mask: 0xfc0001ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "RMC": powerpc.InsnBits{21, 2}}}, // 59:0..5 35:23..30 0:31(RC)
+ {Name: "drrnd.", Opcode: 0xec000046, Mask: 0xfc0001fe, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "RC": powerpc.InsnBits{31, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 59:0..5 35:23..30
+ {Name: "dquai", Opcode: 0xec000086, Mask: 0xfc0001ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "RMC": powerpc.InsnBits{21, 2}, "TE": powerpc.InsnBits{11, 5}}}, // 59:0..5 67:23..30 0:31(RC)
+ {Name: "dquai.", Opcode: 0xec000087, Mask: 0xfc0001ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "RMC": powerpc.InsnBits{21, 2}, "TE": powerpc.InsnBits{11, 5}}}, // 59:0..5 67:23..30 1:31(RC)
+ {Name: "drintx", Opcode: 0xec0000c6, Mask: 0xfc1e01ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "R": powerpc.InsnBits{15, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 59:0..5 0:11..14(///) 99:23..30 0:31(RC)
+ {Name: "drintx.", Opcode: 0xec0000c7, Mask: 0xfc1e01ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "R": powerpc.InsnBits{15, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 59:0..5 0:11..14(///) 99:23..30 1:31(RC)
+ {Name: "drintn", Opcode: 0xec0001c6, Mask: 0xfc1e01ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "R": powerpc.InsnBits{15, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 59:0..5 0:11..14(///) 227:23..30 0:31(RC)
+ {Name: "drintn.", Opcode: 0xec0001c7, Mask: 0xfc1e01ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "R": powerpc.InsnBits{15, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 59:0..5 0:11..14(///) 227:23..30 1:31(RC)
+ {Name: "dtstsfi", Opcode: 0xec000546, Mask: 0xfc4007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRB": powerpc.InsnBits{16, 5}, "UIM": powerpc.InsnBits{10, 6}}}, // 59:0..5 0:9..9(///) 675:21..30 0:31..31(///)
+ {Name: "fcfids", Opcode: 0xfc00069c, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 846:21..30 0:31(RC)
+ {Name: "fcfids.", Opcode: 0xfc00069d, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 846:21..30 1:31(RC)
+ {Name: "fcfidus", Opcode: 0xec00079c, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 974:21..30 0:31(RC)
+ {Name: "fcfidus.", Opcode: 0xec00079d, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 974:21..30 1:31(RC)
+ {Name: "fdivs", Opcode: 0xec000024, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:21..25(///) 18:26..30 0:31(RC)
+ {Name: "fdivs.", Opcode: 0xec000025, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:21..25(///) 18:26..30 1:31(RC)
+ {Name: "fsubs", Opcode: 0xec000028, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:21..25(///) 20:26..30 0:31(RC)
+ {Name: "fsubs.", Opcode: 0xec000029, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:21..25(///) 20:26..30 1:31(RC)
+ {Name: "fadds", Opcode: 0xec00002a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:21..25(///) 21:26..30 0:31(RC)
+ {Name: "fadds.", Opcode: 0xec00002b, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:21..25(///) 21:26..30 1:31(RC)
+ {Name: "fsqrts", Opcode: 0xec00002c, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 0:21..25(///) 22:26..30 0:31(RC)
+ {Name: "fsqrts.", Opcode: 0xec00002d, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 0:21..25(///) 22:26..30 1:31(RC)
+ {Name: "fres", Opcode: 0xec000030, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 0:21..25(///) 24:26..30 0:31(RC)
+ {Name: "fres.", Opcode: 0xec000031, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 0:21..25(///) 24:26..30 1:31(RC)
+ {Name: "fmuls", Opcode: 0xec000032, Mask: 0xfc00f83f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:16..20(///) 25:26..30 0:31(RC)
+ {Name: "fmuls.", Opcode: 0xec000033, Mask: 0xfc00f83f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:16..20(///) 25:26..30 1:31(RC)
+ {Name: "frsqrtes", Opcode: 0xec000034, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 0:21..25(///) 26:26..30 0:31(RC)
+ {Name: "frsqrtes.", Opcode: 0xec000035, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 0:11..15(///) 0:21..25(///) 26:26..30 1:31(RC)
+ {Name: "fmsubs", Opcode: 0xec000038, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 28:26..30 0:31(RC)
+ {Name: "fmsubs.", Opcode: 0xec000039, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 28:26..30 1:31(RC)
+ {Name: "fmadds", Opcode: 0xec00003a, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 29:26..30 0:31(RC)
+ {Name: "fmadds.", Opcode: 0xec00003b, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 29:26..30 1:31(RC)
+ {Name: "fnmsubs", Opcode: 0xec00003c, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 30:26..30 0:31(RC)
+ {Name: "fnmsubs.", Opcode: 0xec00003d, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 30:26..30 1:31(RC)
+ {Name: "fnmadds", Opcode: 0xec00003e, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 31:26..30 0:31(RC)
+ {Name: "fnmadds.", Opcode: 0xec00003f, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 59:0..5 31:26..30 1:31(RC)
+ {Name: "xsaddsp", Opcode: 0xf0000000, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:21..28
+ {Name: "xssubsp", Opcode: 0xf0000020, Mask: 0xfc0007fc, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{30, 0}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 8:21..29
+ {Name: "xsmulsp", Opcode: 0xf0000080, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 16:21..28
+ {Name: "xsdivsp", Opcode: 0xf00000c0, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 24:21..28
+ {Name: "xsadddp", Opcode: 0xf0000100, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 32:21..28
+ {Name: "xssubdp", Opcode: 0xf0000140, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 40:21..28
+ {Name: "xsmuldp", Opcode: 0xf0000180, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 48:21..28
+ {Name: "xsdivdp", Opcode: 0xf00001c0, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 56:21..28
+ {Name: "xvaddsp", Opcode: 0xf0000200, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 64:21..28
+ {Name: "xvsubsp", Opcode: 0xf0000240, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 72:21..28
+ {Name: "xvmulsp", Opcode: 0xf0000280, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 80:21..28
+ {Name: "xvdivsp", Opcode: 0xf00002c0, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 88:21..28
+ {Name: "xvadddp", Opcode: 0xf0000300, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 96:21..28
+ {Name: "xvsubdp", Opcode: 0xf0000340, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 104:21..28
+ {Name: "xvmuldp", Opcode: 0xf0000380, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 112:21..28
+ {Name: "xvdivdp", Opcode: 0xf00003c0, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 120:21..28
+ {Name: "xsmaxcdp", Opcode: 0xf0000400, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 128:21..28
+ {Name: "xsmincdp", Opcode: 0xf0000440, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 136:21..28
+ {Name: "xsmaxjdp", Opcode: 0xf0000480, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 144:21..28
+ {Name: "xsminjdp", Opcode: 0xf00004c0, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 152:21..28
+ {Name: "xsmaxdp", Opcode: 0xf0000500, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 160:21..28
+ {Name: "xsmindp", Opcode: 0xf0000540, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 168:21..28
+ {Name: "xscpsgndp", Opcode: 0xf0000580, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 176:21..28
+ {Name: "xvmaxsp", Opcode: 0xf0000600, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 192:21..28
+ {Name: "xvminsp", Opcode: 0xf0000640, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 200:21..28
+ {Name: "xvcpsgnsp", Opcode: 0xf0000680, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 208:21..28
+ {Name: "xviexpsp", Opcode: 0xf00006c0, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 216:21..28
+ {Name: "xvmaxdp", Opcode: 0xf0000700, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 224:21..28
+ {Name: "xvmindp", Opcode: 0xf0000740, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 232:21..28
+ {Name: "xvcpsgndp", Opcode: 0xf0000780, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 240:21..28
+ {Name: "xviexpdp", Opcode: 0xf00007c0, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 248:21..28
+ {Name: "xsmaddasp", Opcode: 0xf0000008, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 1:21..28
+ {Name: "xsmaddmsp", Opcode: 0xf0000048, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 9:21..28
+ {Name: "xsmsubasp", Opcode: 0xf0000088, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 17:21..28
+ {Name: "xsmsubmsp", Opcode: 0xf00000c8, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 25:21..28
+ {Name: "xsmaddadp", Opcode: 0xf0000108, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 33:21..28
+ {Name: "xsmaddmdp", Opcode: 0xf0000148, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 41:21..28
+ {Name: "xsmsubadp", Opcode: 0xf0000188, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 49:21..28
+ {Name: "xsmsubmdp", Opcode: 0xf00001c8, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 57:21..28
+ {Name: "xvmaddasp", Opcode: 0xf0000208, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 65:21..28
+ {Name: "xvmaddmsp", Opcode: 0xf0000248, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 73:21..28
+ {Name: "xvmsubasp", Opcode: 0xf0000288, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 81:21..28
+ {Name: "xvmsubmsp", Opcode: 0xf00002c8, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 89:21..28
+ {Name: "xvmaddadp", Opcode: 0xf0000308, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 97:21..28
+ {Name: "xvmaddmdp", Opcode: 0xf0000348, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 105:21..28
+ {Name: "xvmsubadp", Opcode: 0xf0000388, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 113:21..28
+ {Name: "xvmsubmdp", Opcode: 0xf00003c8, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 121:21..28
+ {Name: "xsnmaddasp", Opcode: 0xf0000408, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 129:21..28
+ {Name: "xsnmaddmsp", Opcode: 0xf0000448, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 137:21..28
+ {Name: "xsnmsubasp", Opcode: 0xf0000488, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 145:21..28
+ {Name: "xsnmsubmsp", Opcode: 0xf00004c8, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 153:21..28
+ {Name: "xsnmaddadp", Opcode: 0xf0000508, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 161:21..28
+ {Name: "xsnmaddmdp", Opcode: 0xf0000548, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 169:21..28
+ {Name: "xsnmsubadp", Opcode: 0xf0000588, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 177:21..28
+ {Name: "xsnmsubmdp", Opcode: 0xf00005c8, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 185:21..28
+ {Name: "xvnmaddasp", Opcode: 0xf0000608, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 193:21..28
+ {Name: "xvnmaddmsp", Opcode: 0xf0000648, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 201:21..28
+ {Name: "xvnmsubasp", Opcode: 0xf0000688, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 209:21..28
+ {Name: "xvnmsubmsp", Opcode: 0xf00006c8, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 217:21..28
+ {Name: "xvnmaddadp", Opcode: 0xf0000708, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 225:21..28
+ {Name: "xvnmaddmdp", Opcode: 0xf0000748, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 233:21..28
+ {Name: "xvnmsubadp", Opcode: 0xf0000788, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 241:21..28
+ {Name: "xvnmsubmdp", Opcode: 0xf00007c8, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 249:21..28
+ {Name: "xxsldwi", Opcode: 0xf0000010, Mask: 0xfc0004f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "SHW": powerpc.InsnBits{22, 2}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:21..21 2:24..28
+ {Name: "xxpermdi", Opcode: 0xf0000050, Mask: 0xfc0004f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "DM": powerpc.InsnBits{22, 2}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:21..21 10:24..28
+ {Name: "xxmrghw", Opcode: 0xf0000090, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 18:21..28
+ {Name: "xxperm", Opcode: 0xf00000d0, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 26:21..28
+ {Name: "xxmrglw", Opcode: 0xf0000190, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 50:21..28
+ {Name: "xxpermr", Opcode: 0xf00001d0, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 58:21..28
+ {Name: "xxspltw", Opcode: 0xf0000290, Mask: 0xfc1c07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}, "UIM": powerpc.InsnBits{14, 2}}}, // 60:0..5 0:11..13(///) 164:21..29
+ {Name: "xxspltib", Opcode: 0xf00002d0, Mask: 0xfc1807fe, Fields: map[string]powerpc.InsnBits{"IMM8": powerpc.InsnBits{13, 8}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..12 360:21..30
+ {Name: "xxland", Opcode: 0xf0000410, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 130:21..28
+ {Name: "xxlandc", Opcode: 0xf0000450, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 138:21..28
+ {Name: "xxlor", Opcode: 0xf0000490, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 146:21..28
+ {Name: "xxlxor", Opcode: 0xf00004d0, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 154:21..28
+ {Name: "xxlnor", Opcode: 0xf0000510, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 162:21..28
+ {Name: "xxlorc", Opcode: 0xf0000550, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 170:21..28
+ {Name: "xxlnand", Opcode: 0xf0000590, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 178:21..28
+ {Name: "xxleqv", Opcode: 0xf00005d0, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 186:21..28
+ {Name: "xxextractuw", Opcode: 0xf0000294, Mask: 0xfc1007fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}, "UIM": powerpc.InsnBits{12, 4}}}, // 60:0..5 0:11..11(///) 165:21..29
+ {Name: "xxinsertw", Opcode: 0xf00002d4, Mask: 0xfc1007fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}, "UIM": powerpc.InsnBits{12, 4}}}, // 60:0..5 0:11..11(///) 181:21..29
+ {Name: "xscmpeqdp", Opcode: 0xf0000018, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 3:21..28
+ {Name: "xscmpgtdp", Opcode: 0xf0000058, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 11:21..28
+ {Name: "xscmpgedp", Opcode: 0xf0000098, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 19:21..28
+ {Name: "xscmpudp", Opcode: 0xf0000118, Mask: 0xfc6007f9, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BF": powerpc.InsnBits{6, 3}, "BX": powerpc.InsnBits{30, 1}}}, // 60:0..5 0:9..10(///) 35:21..28 0:31..31(///)
+ {Name: "xscmpodp", Opcode: 0xf0000158, Mask: 0xfc6007f9, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BF": powerpc.InsnBits{6, 3}, "BX": powerpc.InsnBits{30, 1}}}, // 60:0..5 0:9..10(///) 43:21..28 0:31..31(///)
+ {Name: "xscmpexpdp", Opcode: 0xf00001d8, Mask: 0xfc6007f9, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BF": powerpc.InsnBits{6, 3}, "BX": powerpc.InsnBits{30, 1}}}, // 60:0..5 0:9..10(///) 59:21..28 0:31..31(///)
+ {Name: "xvcmpeqsp", Opcode: 0xf0000218, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:21(RC) 67:22..28
+ {Name: "xvcmpeqsp.", Opcode: 0xf0000618, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 1:21(RC) 67:22..28
+ {Name: "xvcmpgtsp", Opcode: 0xf0000258, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:21(RC) 75:22..28
+ {Name: "xvcmpgtsp.", Opcode: 0xf0000658, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 1:21(RC) 75:22..28
+ {Name: "xvcmpgesp", Opcode: 0xf0000298, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:21(RC) 83:22..28
+ {Name: "xvcmpgesp.", Opcode: 0xf0000698, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 1:21(RC) 83:22..28
+ {Name: "xvcmpeqdp", Opcode: 0xf0000318, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:21(RC) 99:22..28
+ {Name: "xvcmpeqdp.", Opcode: 0xf0000718, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 1:21(RC) 99:22..28
+ {Name: "xvcmpgtdp", Opcode: 0xf0000358, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:21(RC) 107:22..28
+ {Name: "xvcmpgtdp.", Opcode: 0xf0000758, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 1:21(RC) 107:22..28
+ {Name: "xvcmpgedp", Opcode: 0xf0000398, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:21(RC) 115:22..28
+ {Name: "xvcmpgedp.", Opcode: 0xf0000798, Mask: 0xfc0007f8, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 1:21(RC) 115:22..28
+ {Name: "xscvdpuxws", Opcode: 0xf0000120, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 72:21..29
+ {Name: "xscvdpsxws", Opcode: 0xf0000160, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 88:21..29
+ {Name: "xvcvspuxws", Opcode: 0xf0000220, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 136:21..29
+ {Name: "xvcvspsxws", Opcode: 0xf0000260, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 152:21..29
+ {Name: "xvcvuxwsp", Opcode: 0xf00002a0, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 168:21..29
+ {Name: "xvcvsxwsp", Opcode: 0xf00002e0, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 184:21..29
+ {Name: "xvcvdpuxws", Opcode: 0xf0000320, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 200:21..29
+ {Name: "xvcvdpsxws", Opcode: 0xf0000360, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 216:21..29
+ {Name: "xvcvuxwdp", Opcode: 0xf00003a0, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 232:21..29
+ {Name: "xvcvsxwdp", Opcode: 0xf00003e0, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 248:21..29
+ {Name: "xscvuxdsp", Opcode: 0xf00004a0, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 296:21..29
+ {Name: "xscvsxdsp", Opcode: 0xf00004e0, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 312:21..29
+ {Name: "xscvdpuxds", Opcode: 0xf0000520, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 328:21..29
+ {Name: "xscvdpsxds", Opcode: 0xf0000560, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 344:21..29
+ {Name: "xscvuxddp", Opcode: 0xf00005a0, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 360:21..29
+ {Name: "xscvsxddp", Opcode: 0xf00005e0, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 376:21..29
+ {Name: "xvcvspuxds", Opcode: 0xf0000620, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 392:21..29
+ {Name: "xvcvspsxds", Opcode: 0xf0000660, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 408:21..29
+ {Name: "xvcvuxdsp", Opcode: 0xf00006a0, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 424:21..29
+ {Name: "xvcvsxdsp", Opcode: 0xf00006e0, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 440:21..29
+ {Name: "xvcvdpuxds", Opcode: 0xf0000720, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 456:21..29
+ {Name: "xvcvdpsxds", Opcode: 0xf0000760, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 472:21..29
+ {Name: "xvcvuxddp", Opcode: 0xf00007a0, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 488:21..29
+ {Name: "xvcvsxddp", Opcode: 0xf00007e0, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 504:21..29
+ {Name: "xsrdpi", Opcode: 0xf0000124, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 73:21..29
+ {Name: "xsrdpiz", Opcode: 0xf0000164, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 89:21..29
+ {Name: "xsrdpip", Opcode: 0xf00001a4, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 105:21..29
+ {Name: "xsrdpim", Opcode: 0xf00001e4, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 121:21..29
+ {Name: "xvrspi", Opcode: 0xf0000224, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 137:21..29
+ {Name: "xvrspiz", Opcode: 0xf0000264, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 153:21..29
+ {Name: "xvrspip", Opcode: 0xf00002a4, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 169:21..29
+ {Name: "xvrspim", Opcode: 0xf00002e4, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 185:21..29
+ {Name: "xvrdpi", Opcode: 0xf0000324, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 201:21..29
+ {Name: "xvrdpiz", Opcode: 0xf0000364, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 217:21..29
+ {Name: "xvrdpip", Opcode: 0xf00003a4, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 233:21..29
+ {Name: "xvrdpim", Opcode: 0xf00003e4, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 249:21..29
+ {Name: "xscvdpsp", Opcode: 0xf0000424, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 265:21..29
+ {Name: "xsrsp", Opcode: 0xf0000464, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 281:21..29
+ {Name: "xscvspdp", Opcode: 0xf0000524, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 329:21..29
+ {Name: "xsabsdp", Opcode: 0xf0000564, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 345:21..29
+ {Name: "xsnabsdp", Opcode: 0xf00005a4, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 361:21..29
+ {Name: "xsnegdp", Opcode: 0xf00005e4, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 377:21..29
+ {Name: "xvcvdpsp", Opcode: 0xf0000624, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 393:21..29
+ {Name: "xvabssp", Opcode: 0xf0000664, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 409:21..29
+ {Name: "xvnabssp", Opcode: 0xf00006a4, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 425:21..29
+ {Name: "xvnegsp", Opcode: 0xf00006e4, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 441:21..29
+ {Name: "xvcvspdp", Opcode: 0xf0000724, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 457:21..29
+ {Name: "xvabsdp", Opcode: 0xf0000764, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 473:21..29
+ {Name: "xvnabsdp", Opcode: 0xf00007a4, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 489:21..29
+ {Name: "xvnegdp", Opcode: 0xf00007e4, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 505:21..29
+ {Name: "xsrsqrtesp", Opcode: 0xf0000028, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 10:21..29
+ {Name: "xsresp", Opcode: 0xf0000068, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 26:21..29
+ {Name: "xsrsqrtedp", Opcode: 0xf0000128, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 74:21..29
+ {Name: "xsredp", Opcode: 0xf0000168, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 90:21..29
+ {Name: "xstsqrtdp", Opcode: 0xf00001a8, Mask: 0xfc7f07fd, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BF": powerpc.InsnBits{6, 3}, "BX": powerpc.InsnBits{30, 1}}}, // 60:0..5 0:9..10(///) 0:11..15(///) 106:21..29 0:31..31(///)
+ {Name: "xstdivdp", Opcode: 0xf00001e8, Mask: 0xfc6007f9, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BF": powerpc.InsnBits{6, 3}, "BX": powerpc.InsnBits{30, 1}}}, // 60:0..5 0:9..10(///) 61:21..28 0:31..31(///)
+ {Name: "xvrsqrtesp", Opcode: 0xf0000228, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 138:21..29
+ {Name: "xvresp", Opcode: 0xf0000268, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 154:21..29
+ {Name: "xvtsqrtsp", Opcode: 0xf00002a8, Mask: 0xfc7f07fd, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BF": powerpc.InsnBits{6, 3}, "BX": powerpc.InsnBits{30, 1}}}, // 60:0..5 0:9..10(///) 0:11..15(///) 170:21..29 0:31..31(///)
+ {Name: "xvtdivsp", Opcode: 0xf00002e8, Mask: 0xfc6007f9, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BF": powerpc.InsnBits{6, 3}, "BX": powerpc.InsnBits{30, 1}}}, // 60:0..5 0:9..10(///) 93:21..28 0:31..31(///)
+ {Name: "xvrsqrtedp", Opcode: 0xf0000328, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 202:21..29
+ {Name: "xvredp", Opcode: 0xf0000368, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 218:21..29
+ {Name: "xvtsqrtdp", Opcode: 0xf00003a8, Mask: 0xfc7f07fd, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BF": powerpc.InsnBits{6, 3}, "BX": powerpc.InsnBits{30, 1}}}, // 60:0..5 0:9..10(///) 0:11..15(///) 234:21..29 0:31..31(///)
+ {Name: "xvtdivdp", Opcode: 0xf00003e8, Mask: 0xfc6007f9, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BF": powerpc.InsnBits{6, 3}, "BX": powerpc.InsnBits{30, 1}}}, // 60:0..5 0:9..10(///) 125:21..28 0:31..31(///)
+ {Name: "xststdcsp", Opcode: 0xf00004a8, Mask: 0xfc0007fd, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BF": powerpc.InsnBits{6, 3}, "BX": powerpc.InsnBits{30, 1}, "DCMX": powerpc.InsnBits{9, 7}}}, // 60:0..5 298:21..29 0:31..31(///)
+ {Name: "xststdcdp", Opcode: 0xf00005a8, Mask: 0xfc0007fd, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BF": powerpc.InsnBits{6, 3}, "BX": powerpc.InsnBits{30, 1}, "DCMX": powerpc.InsnBits{9, 7}}}, // 60:0..5 362:21..29 0:31..31(///)
+ {Name: "xvtstdcsp", Opcode: 0xf00006a8, Mask: 0xfc0007b8, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "DC": powerpc.InsnBits{25, 1}, "DM": powerpc.InsnBits{29, 1}, "DX": powerpc.InsnBits{11, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 13:21..24 5:26..28
+ {Name: "xvtstdcdp", Opcode: 0xf00007a8, Mask: 0xfc0007b8, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "DC": powerpc.InsnBits{25, 1}, "DM": powerpc.InsnBits{29, 1}, "DX": powerpc.InsnBits{11, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 15:21..24 5:26..28
+ {Name: "xssqrtsp", Opcode: 0xf000002c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 11:21..29
+ {Name: "xssqrtdp", Opcode: 0xf000012c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 75:21..29
+ {Name: "xsrdpic", Opcode: 0xf00001ac, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 107:21..29
+ {Name: "xvsqrtsp", Opcode: 0xf000022c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 139:21..29
+ {Name: "xvrspic", Opcode: 0xf00002ac, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 171:21..29
+ {Name: "xvsqrtdp", Opcode: 0xf000032c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 203:21..29
+ {Name: "xvrdpic", Opcode: 0xf00003ac, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 235:21..29
+ {Name: "xscvdpspn", Opcode: 0xf000042c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 267:21..29
+ {Name: "xscvspdpn", Opcode: 0xf000052c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15(///) 331:21..29
+ {Name: "xsxexpdp", Opcode: 0xf000056c, Mask: 0xfc1f07fd, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "RT": powerpc.InsnBits{6, 5}}}, // 60:0..5 0:11..15 347:21..29 0:31..31(///)
+ {Name: "xsxsigdp", Opcode: 0xf001056c, Mask: 0xfc1f07fd, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "RT": powerpc.InsnBits{6, 5}}}, // 60:0..5 1:11..15 347:21..29 0:31..31(///)
+ {Name: "xscvhpdp", Opcode: 0xf010056c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 16:11..15 347:21..29
+ {Name: "xscvdphp", Opcode: 0xf011056c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 17:11..15 347:21..29
+ {Name: "xsiexpdp", Opcode: 0xf000072c, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RA": powerpc.InsnBits{11, 5}, "RB": powerpc.InsnBits{16, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 918:21..30
+ {Name: "xvxexpdp", Opcode: 0xf000076c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 0:11..15 475:21..29
+ {Name: "xvxsigdp", Opcode: 0xf001076c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 1:11..15 475:21..29
+ {Name: "xxbrh", Opcode: 0xf007076c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 7:11..15 475:21..29
+ {Name: "xvxexpsp", Opcode: 0xf008076c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 8:11..15 475:21..29
+ {Name: "xvxsigsp", Opcode: 0xf009076c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 9:11..15 475:21..29
+ {Name: "xxbrw", Opcode: 0xf00f076c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 15:11..15 475:21..29
+ {Name: "xxbrd", Opcode: 0xf017076c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 23:11..15 475:21..29
+ {Name: "xvcvhpsp", Opcode: 0xf018076c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 24:11..15 475:21..29
+ {Name: "xvcvsphp", Opcode: 0xf019076c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 25:11..15 475:21..29
+ {Name: "xxbrq", Opcode: 0xf01f076c, Mask: 0xfc1f07fc, Fields: map[string]powerpc.InsnBits{"B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 31:11..15 475:21..29
+ {Name: "xxsel", Opcode: 0xf0000030, Mask: 0xfc000030, Fields: map[string]powerpc.InsnBits{"A": powerpc.InsnBits{11, 5}, "AX": powerpc.InsnBits{29, 1}, "B": powerpc.InsnBits{16, 5}, "BX": powerpc.InsnBits{30, 1}, "C": powerpc.InsnBits{21, 5}, "CX": powerpc.InsnBits{28, 1}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{31, 1}}}, // 60:0..5 3:26..27
+ {Name: "stfdp", Opcode: 0xf4000000, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"DS": powerpc.InsnBits{16, 14}, "FRSP": powerpc.InsnBits{6, 5}, "RA": powerpc.InsnBits{11, 5}}}, // 61:0..5 0:30..31
+ {Name: "lxv", Opcode: 0xf4000001, Mask: 0xfc000007, Fields: map[string]powerpc.InsnBits{"DQ": powerpc.InsnBits{16, 12}, "RA": powerpc.InsnBits{11, 5}, "T": powerpc.InsnBits{6, 5}, "TX": powerpc.InsnBits{28, 1}}}, // 61:0..5 1:29..31
+ {Name: "stxsd", Opcode: 0xf4000002, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"DS": powerpc.InsnBits{16, 14}, "RA": powerpc.InsnBits{11, 5}, "VRS": powerpc.InsnBits{6, 5}}}, // 61:0..5 2:30..31
+ {Name: "stxssp", Opcode: 0xf4000003, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"DS": powerpc.InsnBits{16, 14}, "RA": powerpc.InsnBits{11, 5}, "VRS": powerpc.InsnBits{6, 5}}}, // 61:0..5 3:30..31
+ {Name: "stxv", Opcode: 0xf4000005, Mask: 0xfc000007, Fields: map[string]powerpc.InsnBits{"DQ": powerpc.InsnBits{16, 12}, "RA": powerpc.InsnBits{11, 5}, "S": powerpc.InsnBits{6, 5}, "SX": powerpc.InsnBits{28, 1}}}, // 61:0..5 5:29..31
+ {Name: "std", Opcode: 0xf8000000, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"DS": powerpc.InsnBits{16, 14}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 62:0..5 0:30..31
+ {Name: "stdu", Opcode: 0xf8000001, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"DS": powerpc.InsnBits{16, 14}, "RA": powerpc.InsnBits{11, 5}, "RS": powerpc.InsnBits{6, 5}}}, // 62:0..5 1:30..31
+ {Name: "stq", Opcode: 0xf8000002, Mask: 0xfc000003, Fields: map[string]powerpc.InsnBits{"DS": powerpc.InsnBits{16, 14}, "RA": powerpc.InsnBits{11, 5}, "RSP": powerpc.InsnBits{6, 5}}}, // 62:0..5 2:30..31
+ {Name: "fcmpu", Opcode: 0xfc000000, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}}}, // 63:0..5 0:9..10(///) 0:21..30 0:31..31(///)
+ {Name: "fcmpo", Opcode: 0xfc000040, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}}}, // 63:0..5 0:9..10(///) 32:21..30 0:31..31(///)
+ {Name: "mcrfs", Opcode: 0xfc000080, Mask: 0xfc63ffff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "BFA": powerpc.InsnBits{11, 3}}}, // 63:0..5 0:9..10(///) 0:14..15(///) 0:16..20(///) 64:21..30 0:31..31(///)
+ {Name: "ftdiv", Opcode: 0xfc000100, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}}}, // 63:0..5 0:9..10(///) 128:21..30 0:31..31(///)
+ {Name: "ftsqrt", Opcode: 0xfc000140, Mask: 0xfc7f07ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRB": powerpc.InsnBits{16, 5}}}, // 63:0..5 0:9..10(///) 0:11..15(///) 160:21..30 0:31..31(///)
+ {Name: "daddq", Opcode: 0xfc000004, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 2:21..30 0:31(RC)
+ {Name: "daddq.", Opcode: 0xfc000005, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 2:21..30 1:31(RC)
+ {Name: "dmulq", Opcode: 0xfc000044, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 34:21..30 0:31(RC)
+ {Name: "dmulq.", Opcode: 0xfc000045, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 34:21..30 1:31(RC)
+ {Name: "dscliq", Opcode: 0xfc000084, Mask: 0xfc0003ff, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRTP": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 6}}}, // 63:0..5 66:22..30 0:31(RC)
+ {Name: "dscliq.", Opcode: 0xfc000085, Mask: 0xfc0003ff, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRTP": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 6}}}, // 63:0..5 66:22..30 1:31(RC)
+ {Name: "dscriq", Opcode: 0xfc0000c4, Mask: 0xfc0003ff, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRTP": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 6}}}, // 63:0..5 98:22..30 0:31(RC)
+ {Name: "dscriq.", Opcode: 0xfc0000c5, Mask: 0xfc0003ff, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRTP": powerpc.InsnBits{6, 5}, "SH": powerpc.InsnBits{16, 6}}}, // 63:0..5 98:22..30 1:31(RC)
+ {Name: "dcmpoq", Opcode: 0xfc000082, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}}}, // 63:0..5 0:9..10(///) 130:21..31
+ {Name: "dtstexq", Opcode: 0xfc000144, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}}}, // 63:0..5 0:9..10(///) 162:21..30 0:31..31(///)
+ {Name: "dtstdcq", Opcode: 0xfc000184, Mask: 0xfc6003ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "DCM": powerpc.InsnBits{16, 6}, "FRAP": powerpc.InsnBits{11, 5}}}, // 63:0..5 0:9..10(///) 194:22..30 0:31..31(///)
+ {Name: "dtstdgq", Opcode: 0xfc0001c4, Mask: 0xfc6003ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "DGM": powerpc.InsnBits{16, 6}, "FRAP": powerpc.InsnBits{11, 5}}}, // 63:0..5 0:9..10(///) 226:22..30 0:31..31(///)
+ {Name: "dctqpq", Opcode: 0xfc000204, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 258:21..30 0:31(RC)
+ {Name: "dctqpq.", Opcode: 0xfc000205, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 258:21..30 1:31(RC)
+ {Name: "dctfixq", Opcode: 0xfc000244, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 290:21..30 0:31(RC)
+ {Name: "dctfixq.", Opcode: 0xfc000245, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 290:21..30 1:31(RC)
+ {Name: "ddedpdq", Opcode: 0xfc000284, Mask: 0xfc0707ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "SP": powerpc.InsnBits{11, 2}}}, // 63:0..5 0:13..15(///) 322:21..30 0:31(RC)
+ {Name: "ddedpdq.", Opcode: 0xfc000285, Mask: 0xfc0707ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "SP": powerpc.InsnBits{11, 2}}}, // 63:0..5 0:13..15(///) 322:21..30 1:31(RC)
+ {Name: "dxexq", Opcode: 0xfc0002c4, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 354:21..30 0:31(RC)
+ {Name: "dxexq.", Opcode: 0xfc0002c5, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 354:21..30 1:31(RC)
+ {Name: "dsubq", Opcode: 0xfc000404, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 514:21..30 0:31(RC)
+ {Name: "dsubq.", Opcode: 0xfc000405, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 514:21..30 1:31(RC)
+ {Name: "ddivq", Opcode: 0xfc000444, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 546:21..30 0:31(RC)
+ {Name: "ddivq.", Opcode: 0xfc000445, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 546:21..30 1:31(RC)
+ {Name: "dcmpuq", Opcode: 0xfc000504, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}}}, // 63:0..5 0:9..10(///) 642:21..30 0:31..31(///)
+ {Name: "dtstsfq", Opcode: 0xfc000544, Mask: 0xfc4007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRA": powerpc.InsnBits{10, 6}, "FRBP": powerpc.InsnBits{16, 5}}}, // 63:0..5 0:9..9(///) 674:21..30 0:31..31(///)
+ {Name: "drdpq", Opcode: 0xfc000604, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 770:21..30 0:31(RC)
+ {Name: "drdpq.", Opcode: 0xfc000605, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 770:21..30 1:31(RC)
+ {Name: "dcffixq", Opcode: 0xfc000644, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 802:21..30 0:31(RC)
+ {Name: "dcffixq.", Opcode: 0xfc000645, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 802:21..30 1:31(RC)
+ {Name: "denbcdq", Opcode: 0xfc000684, Mask: 0xfc0f07ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "S": powerpc.InsnBits{11, 1}}}, // 63:0..5 0:12..15(///) 834:21..30 0:31(RC)
+ {Name: "denbcdq.", Opcode: 0xfc000685, Mask: 0xfc0f07ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "S": powerpc.InsnBits{11, 1}}}, // 63:0..5 0:12..15(///) 834:21..30 1:31(RC)
+ {Name: "diexq", Opcode: 0xfc0006c4, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 866:21..30 0:31(RC)
+ {Name: "diexq.", Opcode: 0xfc0006c5, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}}}, // 63:0..5 866:21..30 1:31(RC)
+ {Name: "dquaq", Opcode: 0xfc000006, Mask: 0xfc0001fe, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "RC": powerpc.InsnBits{31, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 63:0..5 3:23..30
+ {Name: "dquaq.", Opcode: 0xfc000006, Mask: 0xfc0001fe, Fields: map[string]powerpc.InsnBits{"FRAP": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "RC": powerpc.InsnBits{31, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 63:0..5 3:23..30
+ {Name: "drrndq", Opcode: 0xfc000046, Mask: 0xfc0001ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "RMC": powerpc.InsnBits{21, 2}}}, // 63:0..5 35:23..30 0:31(RC)
+ {Name: "drrndq.", Opcode: 0xfc000047, Mask: 0xfc0001ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "RMC": powerpc.InsnBits{21, 2}}}, // 63:0..5 35:23..30 1:31(RC)
+ {Name: "dquaiq", Opcode: 0xfc000086, Mask: 0xfc0001ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "RMC": powerpc.InsnBits{21, 2}, "TE": powerpc.InsnBits{11, 5}}}, // 63:0..5 67:23..30 0:31(RC)
+ {Name: "dquaiq.", Opcode: 0xfc000087, Mask: 0xfc0001ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "RMC": powerpc.InsnBits{21, 2}, "TE": powerpc.InsnBits{11, 5}}}, // 63:0..5 67:23..30 1:31(RC)
+ {Name: "drintxq", Opcode: 0xfc0000c6, Mask: 0xfc1e01ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "R": powerpc.InsnBits{15, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 63:0..5 0:11..14(///) 99:23..30 0:31(RC)
+ {Name: "drintxq.", Opcode: 0xfc0000c7, Mask: 0xfc1e01ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "R": powerpc.InsnBits{15, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 63:0..5 0:11..14(///) 99:23..30 1:31(RC)
+ {Name: "drintnq", Opcode: 0xfc0001c6, Mask: 0xfc1e01ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "R": powerpc.InsnBits{15, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 63:0..5 0:11..14(///) 227:23..30 0:31(RC)
+ {Name: "drintnq.", Opcode: 0xfc0001c7, Mask: 0xfc1e01ff, Fields: map[string]powerpc.InsnBits{"FRBP": powerpc.InsnBits{16, 5}, "FRTP": powerpc.InsnBits{6, 5}, "R": powerpc.InsnBits{15, 1}, "RMC": powerpc.InsnBits{21, 2}}}, // 63:0..5 0:11..14(///) 227:23..30 1:31(RC)
+ {Name: "dtstsfiq", Opcode: 0xfc000546, Mask: 0xfc4007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "FRBP": powerpc.InsnBits{16, 5}, "UIM": powerpc.InsnBits{10, 6}}}, // 63:0..5 0:9..9(///) 675:21..30 0:31..31(///)
+ {Name: "xsaddqp", Opcode: 0xfc000008, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 4:21..30
+ {Name: "xsaddqpo", Opcode: 0xfc000008, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 4:21..30
+ {Name: "xsmulqp", Opcode: 0xfc000048, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 36:21..30
+ {Name: "xsmulqpo", Opcode: 0xfc000048, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 36:21..30
+ {Name: "xscpsgnqp", Opcode: 0xfc0000c8, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 100:21..30 0:31..31(///)
+ {Name: "xscmpoqp", Opcode: 0xfc000108, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}}}, // 63:0..5 0:9..10(///) 132:21..30 0:31..31(///)
+ {Name: "xscmpexpqp", Opcode: 0xfc000148, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}}}, // 63:0..5 0:9..10(///) 164:21..30 0:31..31(///)
+ {Name: "xsmaddqp", Opcode: 0xfc000308, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 388:21..30
+ {Name: "xsmaddqpo", Opcode: 0xfc000309, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 388:21..30 1:31(RO)
+ {Name: "xsmsubqp", Opcode: 0xfc000348, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 420:21..30
+ {Name: "xsmsubqpo", Opcode: 0xfc000349, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 420:21..30 1:31(RO)
+ {Name: "xsnmaddqp", Opcode: 0xfc000388, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 452:21..30
+ {Name: "xsnmaddqpo", Opcode: 0xfc000389, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 452:21..30 1:31(RO)
+ {Name: "xsnmsubqp", Opcode: 0xfc0003c8, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 484:21..30
+ {Name: "xsnmsubqpo", Opcode: 0xfc0003c9, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 484:21..30 1:31(RO)
+ {Name: "xssubqp", Opcode: 0xfc000408, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 516:21..30
+ {Name: "xssubqpo", Opcode: 0xfc000408, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 516:21..30
+ {Name: "xsdivqp", Opcode: 0xfc000448, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 548:21..30
+ {Name: "xsdivqpo", Opcode: 0xfc000448, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 548:21..30
+ {Name: "xscmpuqp", Opcode: 0xfc000508, Mask: 0xfc6007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}}}, // 63:0..5 0:9..10(///) 644:21..30 0:31..31(///)
+ {Name: "xststdcqp", Opcode: 0xfc000588, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "DCMX": powerpc.InsnBits{9, 7}, "VRB": powerpc.InsnBits{16, 5}}}, // 63:0..5 708:21..30 0:31..31(///)
+ {Name: "xsabsqp", Opcode: 0xfc000648, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15 804:21..30 0:31..31(///)
+ {Name: "xsxexpqp", Opcode: 0xfc020648, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 2:11..15 804:21..30 0:31..31(///)
+ {Name: "xsnabsqp", Opcode: 0xfc080648, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 8:11..15 804:21..30 0:31..31(///)
+ {Name: "xsnegqp", Opcode: 0xfc100648, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 16:11..15 804:21..30 0:31..31(///)
+ {Name: "xsxsigqp", Opcode: 0xfc120648, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 18:11..15 804:21..30 0:31..31(///)
+ {Name: "xssqrtqp", Opcode: 0xfc1b0648, Mask: 0xfc1f07fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 27:11..15 804:21..30
+ {Name: "xssqrtqpo", Opcode: 0xfc1b0648, Mask: 0xfc1f07fe, Fields: map[string]powerpc.InsnBits{"RO": powerpc.InsnBits{31, 1}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 27:11..15 804:21..30
+ {Name: "xscvqpuwz", Opcode: 0xfc010688, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 1:11..15 836:21..30 0:31..31(///)
+ {Name: "xscvudqp", Opcode: 0xfc020688, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 2:11..15 836:21..30 0:31..31(///)
+ {Name: "xscvqpswz", Opcode: 0xfc090688, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 9:11..15 836:21..30 0:31..31(///)
+ {Name: "xscvsdqp", Opcode: 0xfc0a0688, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 10:11..15 836:21..30 0:31..31(///)
+ {Name: "xscvqpudz", Opcode: 0xfc110688, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 17:11..15 836:21..30 0:31..31(///)
+ {Name: "xscvqpdp", Opcode: 0xfc140688, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 20:11..15 836:21..30 0:31(RO)
+ {Name: "xscvqpdpo", Opcode: 0xfc140689, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 20:11..15 836:21..30 1:31(RO)
+ {Name: "xscvdpqp", Opcode: 0xfc160688, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 22:11..15 836:21..30 0:31..31(///)
+ {Name: "xscvqpsdz", Opcode: 0xfc190688, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 25:11..15 836:21..30 0:31..31(///)
+ {Name: "xsiexpqp", Opcode: 0xfc0006c8, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"VRA": powerpc.InsnBits{11, 5}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 868:21..30 0:31..31(///)
+ {Name: "xsrqpi", Opcode: 0xfc00000a, Mask: 0xfc1e01ff, Fields: map[string]powerpc.InsnBits{"R": powerpc.InsnBits{15, 1}, "RMC": powerpc.InsnBits{21, 2}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..14(///) 5:23..30 0:31(EX)
+ {Name: "xsrqpix", Opcode: 0xfc00000b, Mask: 0xfc1e01ff, Fields: map[string]powerpc.InsnBits{"R": powerpc.InsnBits{15, 1}, "RMC": powerpc.InsnBits{21, 2}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..14(///) 5:23..30 1:31(EX)
+ {Name: "xsrqpxp", Opcode: 0xfc00004a, Mask: 0xfc1e01ff, Fields: map[string]powerpc.InsnBits{"R": powerpc.InsnBits{15, 1}, "RMC": powerpc.InsnBits{21, 2}, "VRB": powerpc.InsnBits{16, 5}, "VRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..14(///) 37:23..30 0:31..31(///)
+ {Name: "mtfsb1", Opcode: 0xfc00004c, Mask: 0xfc1fffff, Fields: map[string]powerpc.InsnBits{"BT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 0:16..20(///) 38:21..30 0:31(RC)
+ {Name: "mtfsb1.", Opcode: 0xfc00004d, Mask: 0xfc1fffff, Fields: map[string]powerpc.InsnBits{"BT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 0:16..20(///) 38:21..30 1:31(RC)
+ {Name: "mtfsb0", Opcode: 0xfc00008c, Mask: 0xfc1fffff, Fields: map[string]powerpc.InsnBits{"BT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 0:16..20(///) 70:21..30 0:31(RC)
+ {Name: "mtfsb0.", Opcode: 0xfc00008d, Mask: 0xfc1fffff, Fields: map[string]powerpc.InsnBits{"BT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 0:16..20(///) 70:21..30 1:31(RC)
+ {Name: "mtfsfi", Opcode: 0xfc00010c, Mask: 0xfc7e0fff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "U": powerpc.InsnBits{16, 4}, "W": powerpc.InsnBits{15, 1}}}, // 63:0..5 0:9..10(///) 0:11..14(///) 0:20..20(///) 134:21..30 0:31(RC)
+ {Name: "mtfsfi.", Opcode: 0xfc00010d, Mask: 0xfc7e0fff, Fields: map[string]powerpc.InsnBits{"BF": powerpc.InsnBits{6, 3}, "U": powerpc.InsnBits{16, 4}, "W": powerpc.InsnBits{15, 1}}}, // 63:0..5 0:9..10(///) 0:11..14(///) 0:20..20(///) 134:21..30 1:31(RC)
+ {Name: "fmrgow", Opcode: 0xfc00068c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 838:21..30 0:31..31(///)
+ {Name: "fmrgew", Opcode: 0xfc00078c, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 966:21..30 0:31..31(///)
+ {Name: "mffs", Opcode: 0xfc00048e, Mask: 0xfc1fffff, Fields: map[string]powerpc.InsnBits{"FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..12 0:13..15 0:16..20(///) 583:21..30 0:31(RC)
+ {Name: "mffs.", Opcode: 0xfc00048f, Mask: 0xfc1fffff, Fields: map[string]powerpc.InsnBits{"FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..12 0:13..15 0:16..20(///) 583:21..30 1:31(RC)
+ {Name: "mffsce", Opcode: 0xfc01048e, Mask: 0xfc1fffff, Fields: map[string]powerpc.InsnBits{"FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..12 1:13..15 0:16..20(///) 583:21..30 0:31..31(///)
+ {Name: "mffscdrn", Opcode: 0xfc14048e, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 2:11..12 4:13..15 583:21..30 0:31..31(///)
+ {Name: "mffscdrni", Opcode: 0xfc15048e, Mask: 0xfc1fc7ff, Fields: map[string]powerpc.InsnBits{"DRM": powerpc.InsnBits{18, 3}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 2:11..12 5:13..15 0:16..17(///) 583:21..30 0:31..31(///)
+ {Name: "mffscrn", Opcode: 0xfc16048e, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 2:11..12 6:13..15 583:21..30 0:31..31(///)
+ {Name: "mffscrni", Opcode: 0xfc17048e, Mask: 0xfc1fe7ff, Fields: map[string]powerpc.InsnBits{"FRT": powerpc.InsnBits{6, 5}, "RM": powerpc.InsnBits{19, 2}}}, // 63:0..5 2:11..12 7:13..15 0:16..18(///) 583:21..30 0:31..31(///)
+ {Name: "mffsl", Opcode: 0xfc18048e, Mask: 0xfc1fffff, Fields: map[string]powerpc.InsnBits{"FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 3:11..12 0:13..15 0:16..20(///) 583:21..30 0:31..31(///)
+ {Name: "mtfsf", Opcode: 0xfc00058e, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FLM": powerpc.InsnBits{7, 8}, "FRB": powerpc.InsnBits{16, 5}, "L": powerpc.InsnBits{6, 1}, "W": powerpc.InsnBits{15, 1}}}, // 63:0..5 711:21..30 0:31(RC)
+ {Name: "mtfsf.", Opcode: 0xfc00058f, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FLM": powerpc.InsnBits{7, 8}, "FRB": powerpc.InsnBits{16, 5}, "L": powerpc.InsnBits{6, 1}, "W": powerpc.InsnBits{15, 1}}}, // 63:0..5 711:21..30 1:31(RC)
+ {Name: "fcpsgn", Opcode: 0xfc000010, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "RC": powerpc.InsnBits{31, 1}}}, // 63:0..5 8:21..30
+ {Name: "fcpsgn.", Opcode: 0xfc000010, Mask: 0xfc0007fe, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}, "RC": powerpc.InsnBits{31, 1}}}, // 63:0..5 8:21..30
+ {Name: "fneg", Opcode: 0xfc000050, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 40:21..30 0:31(RC)
+ {Name: "fneg.", Opcode: 0xfc000051, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 40:21..30 1:31(RC)
+ {Name: "fmr", Opcode: 0xfc000090, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 72:21..30 0:31(RC)
+ {Name: "fmr.", Opcode: 0xfc000091, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 72:21..30 1:31(RC)
+ {Name: "fnabs", Opcode: 0xfc000110, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 136:21..30 0:31(RC)
+ {Name: "fnabs.", Opcode: 0xfc000111, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 136:21..30 1:31(RC)
+ {Name: "fabs", Opcode: 0xfc000210, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 264:21..30 0:31(RC)
+ {Name: "fabs.", Opcode: 0xfc000211, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 264:21..30 1:31(RC)
+ {Name: "frin", Opcode: 0xfc000310, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 392:21..30 0:31(RC)
+ {Name: "frin.", Opcode: 0xfc000311, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 392:21..30 1:31(RC)
+ {Name: "friz", Opcode: 0xfc000350, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 424:21..30 0:31(RC)
+ {Name: "friz.", Opcode: 0xfc000351, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 424:21..30 1:31(RC)
+ {Name: "frip", Opcode: 0xfc000390, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 456:21..30 0:31(RC)
+ {Name: "frip.", Opcode: 0xfc000391, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 456:21..30 1:31(RC)
+ {Name: "frim", Opcode: 0xfc0003d0, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 488:21..30 0:31(RC)
+ {Name: "frim.", Opcode: 0xfc0003d1, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 488:21..30 1:31(RC)
+ {Name: "frsp", Opcode: 0xfc000018, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 12:21..30 0:31(RC)
+ {Name: "frsp.", Opcode: 0xfc000019, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 12:21..30 1:31(RC)
+ {Name: "fctiw", Opcode: 0xfc00001c, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 14:21..30 0:31(RC)
+ {Name: "fctiw.", Opcode: 0xfc00001d, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 14:21..30 1:31(RC)
+ {Name: "fctiwu", Opcode: 0xfc00011c, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 142:21..30 0:31(RC)
+ {Name: "fctiwu.", Opcode: 0xfc00011d, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 142:21..30 1:31(RC)
+ {Name: "fctid", Opcode: 0xfc00065c, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 814:21..30 0:31(RC)
+ {Name: "fctid.", Opcode: 0xfc00065d, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 814:21..30 1:31(RC)
+ {Name: "fcfid", Opcode: 0xfc00069c, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 846:21..30 0:31(RC)
+ {Name: "fcfid.", Opcode: 0xfc00069d, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 846:21..30 1:31(RC)
+ {Name: "fctidu", Opcode: 0xfc00075c, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 942:21..30 0:31(RC)
+ {Name: "fctidu.", Opcode: 0xfc00075d, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 942:21..30 1:31(RC)
+ {Name: "fcfidu", Opcode: 0xfc00079c, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 974:21..30 0:31(RC)
+ {Name: "fcfidu.", Opcode: 0xfc00079d, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 974:21..30 1:31(RC)
+ {Name: "fctiwz", Opcode: 0xfc00001e, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 15:21..30 0:31(RC)
+ {Name: "fctiwz.", Opcode: 0xfc00001f, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 15:21..30 1:31(RC)
+ {Name: "fctiwuz", Opcode: 0xfc00011e, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 143:21..30 0:31(RC)
+ {Name: "fctiwuz.", Opcode: 0xfc00011f, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 143:21..30 1:31(RC)
+ {Name: "fctidz", Opcode: 0xfc00065e, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 815:21..30 0:31(RC)
+ {Name: "fctidz.", Opcode: 0xfc00065f, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 815:21..30 1:31(RC)
+ {Name: "fctiduz", Opcode: 0xfc00075e, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 943:21..30 0:31(RC)
+ {Name: "fctiduz.", Opcode: 0xfc00075f, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 943:21..30 1:31(RC)
+ {Name: "fdiv", Opcode: 0xfc000024, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:21..25(///) 18:26..30 0:31(RC)
+ {Name: "fdiv.", Opcode: 0xfc000025, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:21..25(///) 18:26..30 1:31(RC)
+ {Name: "fsub", Opcode: 0xfc000028, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:21..25(///) 20:26..30 0:31(RC)
+ {Name: "fsub.", Opcode: 0xfc000029, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:21..25(///) 20:26..30 1:31(RC)
+ {Name: "fadd", Opcode: 0xfc00002a, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:21..25(///) 21:26..30 0:31(RC)
+ {Name: "fadd.", Opcode: 0xfc00002b, Mask: 0xfc0007ff, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:21..25(///) 21:26..30 1:31(RC)
+ {Name: "fsqrt", Opcode: 0xfc00002c, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 0:21..25(///) 22:26..30 0:31(RC)
+ {Name: "fsqrt.", Opcode: 0xfc00002d, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 0:21..25(///) 22:26..30 1:31(RC)
+ {Name: "fsel", Opcode: 0xfc00002e, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 23:26..30 0:31(RC)
+ {Name: "fsel.", Opcode: 0xfc00002f, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 23:26..30 1:31(RC)
+ {Name: "fre", Opcode: 0xfc000030, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 0:21..25(///) 24:26..30 0:31(RC)
+ {Name: "fre.", Opcode: 0xfc000031, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 0:21..25(///) 24:26..30 1:31(RC)
+ {Name: "fmul", Opcode: 0xfc000032, Mask: 0xfc00f83f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:16..20(///) 25:26..30 0:31(RC)
+ {Name: "fmul.", Opcode: 0xfc000033, Mask: 0xfc00f83f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:16..20(///) 25:26..30 1:31(RC)
+ {Name: "frsqrte", Opcode: 0xfc000034, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 0:21..25(///) 26:26..30 0:31(RC)
+ {Name: "frsqrte.", Opcode: 0xfc000035, Mask: 0xfc1f07ff, Fields: map[string]powerpc.InsnBits{"FRB": powerpc.InsnBits{16, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 0:11..15(///) 0:21..25(///) 26:26..30 1:31(RC)
+ {Name: "fmsub", Opcode: 0xfc000038, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 28:26..30 0:31(RC)
+ {Name: "fmsub.", Opcode: 0xfc000039, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 28:26..30 1:31(RC)
+ {Name: "fmadd", Opcode: 0xfc00003a, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 29:26..30 0:31(RC)
+ {Name: "fmadd.", Opcode: 0xfc00003b, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 29:26..30 1:31(RC)
+ {Name: "fnmsub", Opcode: 0xfc00003c, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 30:26..30 0:31(RC)
+ {Name: "fnmsub.", Opcode: 0xfc00003d, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 30:26..30 1:31(RC)
+ {Name: "fnmadd", Opcode: 0xfc00003e, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 31:26..30 0:31(RC)
+ {Name: "fnmadd.", Opcode: 0xfc00003f, Mask: 0xfc00003f, Fields: map[string]powerpc.InsnBits{"FRA": powerpc.InsnBits{11, 5}, "FRB": powerpc.InsnBits{16, 5}, "FRC": powerpc.InsnBits{21, 5}, "FRT": powerpc.InsnBits{6, 5}}}, // 63:0..5 31:26..30 1:31(RC)
+}
diff --git a/pkg/ifuzz/powerpc/powerpc.go b/pkg/ifuzz/powerpc/powerpc.go
new file mode 100644
index 000000000..0dd3a57d6
--- /dev/null
+++ b/pkg/ifuzz/powerpc/powerpc.go
@@ -0,0 +1,165 @@
+// Copyright 2020 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+// Package ifuzz allows to generate and mutate PPC64 PowerISA 3.0B machine code.
+
+// The ISA for POWER9 (the latest available at the moment) is at:
+// https://openpowerfoundation.org/?resource_lib=power-isa-version-3-0
+//
+// A script on top of pdftotext was used to produce insns.go:
+// ./powerisa30_to_syz /home/aik/Documents/ppc/power9/PowerISA_public.v3.0B.pdf > 1.go
+// .
+
+package powerpc
+
+import (
+ "encoding/binary"
+ "errors"
+ "fmt"
+ "github.com/google/syzkaller/pkg/ifuzz"
+ "github.com/google/syzkaller/pkg/ifuzz/ifuzzimpl"
+ "math/rand"
+)
+
+type InsnBits struct {
+ Start uint // Big endian bit order.
+ Length uint
+}
+
+type Insn struct {
+ Name string
+ M64 bool // true if the instruction is 64bit _only_.
+ Priv bool
+ Pseudo bool
+ Fields map[string]InsnBits // for ra/rb/rt/si/...
+ Opcode uint32
+ Mask uint32
+
+ generator func(cfg *ifuzz.Config, r *rand.Rand) []byte
+}
+
+type InsnSetPowerPC struct {
+ Insns []*Insn
+ modeInsns [ifuzz.ModeLast][ifuzz.TypeLast][]ifuzz.Insn
+ insnMap map[string]*Insn
+}
+
+func (insnset *InsnSetPowerPC) GetInsns(mode, insntype int) []ifuzz.Insn {
+ return insnset.modeInsns[mode][insntype]
+}
+
+func (insnset *InsnSetPowerPC) Decode(mode int, text []byte) (int, error) {
+ if len(text) < 4 {
+ return 0, errors.New("must be at least 4 bytes")
+ }
+ insn32 := binary.LittleEndian.Uint32(text)
+ for _, ins := range insnset.Insns {
+ if ins.Mask&insn32 == ins.Opcode {
+ return 4, nil
+ }
+ }
+ return 0, fmt.Errorf("unrecognised instruction %08x", insn32)
+}
+
+func (insnset *InsnSetPowerPC) DecodeExt(mode int, text []byte) (int, error) {
+ return 0, fmt.Errorf("no external decoder")
+}
+
+func encodeBits(n uint, f InsnBits) uint32 {
+ mask := uint(1<<f.Length) - 1
+ return uint32((n & mask) << (31 - (f.Start + f.Length - 1)))
+}
+
+func (insn *Insn) EncodeParam(v map[string]uint, r *rand.Rand) []byte {
+ insn32 := insn.Opcode
+ for reg, bits := range insn.Fields {
+ if val, ok := v[reg]; ok {
+ insn32 |= encodeBits(val, bits)
+ } else if r != nil {
+ insn32 |= encodeBits(uint(r.Intn(1<<16)), bits)
+ }
+ }
+
+ ret := make([]byte, 4)
+ binary.LittleEndian.PutUint32(ret, insn32)
+ return ret
+}
+
+func (insn Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte {
+ if insn.Pseudo {
+ return insn.generator(cfg, r)
+ }
+
+ return insn.EncodeParam(nil, r)
+}
+
+func Register(insns []*Insn) {
+ var insnset InsnSetPowerPC
+
+ insnset.Insns = insns
+ if len(insnset.Insns) == 0 {
+ panic("no instructions")
+ }
+ insnset.insnMap = make(map[string]*Insn)
+ for _, insn := range insnset.Insns {
+ insnset.insnMap[insn.GetName()] = insn
+ }
+ insnset.initPseudo()
+ for mode := 0; mode < ifuzz.ModeLast; mode++ {
+ for _, insn := range insnset.Insns {
+ if insn.GetMode()&(1<<uint(mode)) == 0 {
+ continue
+ }
+ if insn.GetPseudo() {
+ insnset.modeInsns[mode][ifuzz.TypeExec] =
+ append(insnset.modeInsns[mode][ifuzz.TypeExec], ifuzz.Insn(insn))
+ } else if insn.GetPriv() {
+ insnset.modeInsns[mode][ifuzz.TypePriv] =
+ append(insnset.modeInsns[mode][ifuzz.TypePriv], ifuzz.Insn(insn))
+ insnset.modeInsns[mode][ifuzz.TypeAll] =
+ append(insnset.modeInsns[mode][ifuzz.TypeAll], ifuzz.Insn(insn))
+ } else {
+ insnset.modeInsns[mode][ifuzz.TypeUser] =
+ append(insnset.modeInsns[mode][ifuzz.TypeUser], ifuzz.Insn(insn))
+ insnset.modeInsns[mode][ifuzz.TypeAll] =
+ append(insnset.modeInsns[mode][ifuzz.TypeAll], ifuzz.Insn(insn))
+ }
+ }
+ }
+ ifuzzimpl.Register(ifuzz.ArchPowerPC, ifuzz.InsnSet(&insnset))
+}
+
+func (insn Insn) GetName() string {
+ return insn.Name
+}
+
+func (insn Insn) GetMode() int {
+ if insn.M64 {
+ return (1 << ifuzz.ModeLong64)
+ }
+ return (1 << ifuzz.ModeLong64) | (1 << ifuzz.ModeProt32)
+}
+
+func (insn Insn) GetPriv() bool {
+ return insn.Priv
+}
+
+func (insn Insn) GetPseudo() bool {
+ return insn.Pseudo
+}
+
+func (insn Insn) IsCompatible(cfg *ifuzz.Config) bool {
+ if cfg.Mode < 0 || cfg.Mode >= ifuzz.ModeLast {
+ panic("bad mode")
+ }
+ if insn.Priv && !cfg.Priv {
+ return false
+ }
+ if insn.Pseudo && !cfg.Exec {
+ return false
+ }
+ if insn.M64 && ((1 << uint(cfg.Mode)) != ifuzz.ModeLong64) {
+ return false
+ }
+ return true
+}
diff --git a/pkg/ifuzz/powerpc/pseudo.go b/pkg/ifuzz/powerpc/pseudo.go
new file mode 100644
index 000000000..e39863b32
--- /dev/null
+++ b/pkg/ifuzz/powerpc/pseudo.go
@@ -0,0 +1,108 @@
+// Copyright 2020 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+package powerpc
+
+import (
+ "github.com/google/syzkaller/pkg/ifuzz"
+ "math/rand"
+)
+
+// nolint:dupl
+func (insnset *InsnSetPowerPC) initPseudo() {
+ insnset.Insns = append(insnset.Insns, &Insn{
+ Name: "PSEUDO_hypercall",
+ Priv: true,
+ Pseudo: true,
+ generator: func(cfg *ifuzz.Config, r *rand.Rand) []byte {
+ gen := makeGen(insnset, cfg, r)
+ gen.sc(1)
+ return gen.text
+ },
+ })
+ insnset.Insns = append(insnset.Insns, &Insn{
+ Name: "PSEUDO_syscall",
+ Priv: true,
+ Pseudo: true,
+ generator: func(cfg *ifuzz.Config, r *rand.Rand) []byte {
+ gen := makeGen(insnset, cfg, r)
+ gen.sc(0)
+ return gen.text
+ },
+ })
+ insnset.Insns = append(insnset.Insns, &Insn{
+ Name: "PSEUDO_ultracall",
+ Priv: true,
+ Pseudo: true,
+ generator: func(cfg *ifuzz.Config, r *rand.Rand) []byte {
+ gen := makeGen(insnset, cfg, r)
+ gen.sc(2)
+ return gen.text
+ },
+ })
+}
+
+type generator struct {
+ imap map[string]*Insn
+ mode int
+ r *rand.Rand
+ text []byte
+}
+
+func makeGen(insnset *InsnSetPowerPC, cfg *ifuzz.Config, r *rand.Rand) *generator {
+ return &generator{
+ imap: insnset.insnMap,
+ mode: cfg.Mode,
+ r: r,
+ }
+}
+
+func (gen *generator) byte(v []byte) {
+ gen.text = append(gen.text, v...)
+}
+
+func (gen *generator) ld64(reg uint, v uint64) {
+ // This is a widely used macro to load immediate on ppc64
+ // #define LOAD64(rn,name)
+ // addis rn,0,name##@highest \ lis rn,name##@highest
+ // ori rn,rn,name##@higher
+ // rldicr rn,rn,32,31
+ // oris rn,rn,name##@h
+ // ori rn,rn,name##@l
+ gen.byte(gen.imap["addis"].EncodeParam(map[string]uint{
+ "RT": reg,
+ "RA": 0, // In "addis", '0' means 0, not GPR0 .
+ "SI": uint((v >> 48) & 0xffff)},
+ nil))
+ gen.byte(gen.imap["ori"].EncodeParam(map[string]uint{
+ "RA": reg,
+ "RS": reg,
+ "UI": uint((v >> 32) & 0xffff)},
+ nil))
+ gen.byte(gen.imap["rldicr"].EncodeParam(map[string]uint{
+ "RA": reg,
+ "RS": reg,
+ "SH": 32,
+ "ME": 31},
+ nil))
+ gen.byte(gen.imap["oris"].EncodeParam(map[string]uint{
+ "RA": reg,
+ "RS": reg,
+ "UI": uint((v >> 16) & 0xffff)},
+ nil))
+ gen.byte(gen.imap["ori"].EncodeParam(map[string]uint{
+ "RA": reg,
+ "RS": reg,
+ "UI": uint(v & 0xffff)},
+ nil))
+}
+
+func (gen *generator) sc(lev uint) {
+ n := gen.r.Intn(9)
+ // Valid hcall humbers at the momemt are: 4..0x450
+ gen.ld64(3, uint64(gen.r.Intn(4+(0x450-4)/4)))
+ for i := 4; i < n+4; i++ {
+ gen.ld64(uint(i), gen.r.Uint64())
+ }
+ gen.byte(gen.imap["sc"].EncodeParam(map[string]uint{"LEV": lev}, nil))
+}
diff --git a/prog/rand.go b/prog/rand.go
index 85998b942..bc23ed427 100644
--- a/prog/rand.go
+++ b/prog/rand.go
@@ -14,7 +14,8 @@ import (
"github.com/google/syzkaller/pkg/ifuzz"
"github.com/google/syzkaller/pkg/ifuzz/ifuzzimpl"
- _ "github.com/google/syzkaller/pkg/ifuzz/x86/generated" // pull in generated instruction descriptions
+ _ "github.com/google/syzkaller/pkg/ifuzz/powerpc/generated" // pull in generated instruction descriptions
+ _ "github.com/google/syzkaller/pkg/ifuzz/x86/generated" // pull in generated instruction descriptions
)
const (
@@ -479,6 +480,9 @@ func createTargetIfuzzConfig(target *Target) *ifuzz.Config {
case "386":
cfg.Mode = ifuzz.ModeProt32
cfg.Arch = ifuzz.ArchX86
+ case "ppc64":
+ cfg.Mode = ifuzz.ModeLong64
+ cfg.Arch = ifuzz.ArchPowerPC
default:
return nil
}
@@ -517,6 +521,9 @@ func createIfuzzConfig(kind TextKind) *ifuzz.Config {
case TextX86bit64:
cfg.Mode = ifuzz.ModeLong64
cfg.Arch = ifuzz.ArchX86
+ case TextPpc64:
+ cfg.Mode = ifuzz.ModeLong64
+ cfg.Arch = ifuzz.ArchPowerPC
default:
panic("unknown text kind")
}
diff --git a/prog/types.go b/prog/types.go
index 4fdb7bc95..482b20e2d 100644
--- a/prog/types.go
+++ b/prog/types.go
@@ -492,6 +492,7 @@ const (
TextX86bit32
TextX86bit64
TextArm64
+ TextPpc64
)
type BufferType struct {
diff --git a/sys/linux/dev_kvm.txt b/sys/linux/dev_kvm.txt
index a38da6086..78615a8b6 100644
--- a/sys/linux/dev_kvm.txt
+++ b/sys/linux/dev_kvm.txt
@@ -157,6 +157,7 @@ kvm_x86_rflags = 1, 2, 4, 16, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384,
# The interface is designed for extensibility so that addition of new options does not invalidate all existing programs.
syz_kvm_setup_cpu$x86(fd fd_kvmvm, cpufd fd_kvmcpu, usermem vma[24], text ptr[in, array[kvm_text_x86, 1]], ntext len[text], flags flags[kvm_setup_flags], opts ptr[in, array[kvm_setup_opt_x86, 0:2]], nopt len[opts])
syz_kvm_setup_cpu$arm64(fd fd_kvmvm, cpufd fd_kvmcpu, usermem vma[24], text ptr[in, array[kvm_text_arm64, 1]], ntext len[text], flags const[0], opts ptr[in, array[kvm_setup_opt_arm64, 1]], nopt len[opts])
+syz_kvm_setup_cpu$ppc64(fd fd_kvmvm, cpufd fd_kvmcpu, usermem vma[24], text ptr[in, array[kvm_text_ppc64, 1]], ntext len[text], flags const[0], opts ptr[in, array[kvm_setup_opt_ppc64, 1]], nopt len[opts])
kvm_text_x86 [
textreal kvm_text_x86_real
@@ -195,6 +196,12 @@ kvm_text_arm64 {
size len[text, intptr]
}
+kvm_text_ppc64 {
+ typ const[0, intptr]
+ text ptr[in, text[ppc64]]
+ size len[text, intptr]
+}
+
kvm_setup_opt_x86 [
cr0 kvm_setup_opt_cr0
cr4 kvm_setup_opt_cr4
@@ -271,6 +278,17 @@ kvm_setup_opt_feature {
val flags[kvm_vcpu_features_arm64, int64]
}
+kvm_setup_opt_ppc64 [
+# unions need at least 2 fields, but we have only 1 now, but we want to have it as union for future extention
+ featur1 kvm_setup_opt_ppc64_feature
+ featur2 kvm_setup_opt_ppc64_feature
+]
+
+kvm_setup_opt_ppc64_feature {
+ typ const[1, int64]
+ val int64
+}
+
kvm_setup_flags = KVM_SETUP_PAGING, KVM_SETUP_PAE, KVM_SETUP_PROTECTED, KVM_SETUP_CPL3, KVM_SETUP_VIRT86, KVM_SETUP_SMM, KVM_SETUP_VM
define KVM_SETUP_PAGING (1<<0)