Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'powerpc-4.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux

Pull more powerpc updates from Michael Ellerman:
"Highlights include:

- an update of the disassembly code used by xmon to the latest
versions in binutils. We've received permission from all the
authors of the relevant binutils changes to relicense their changes
to the relevant files from GPLv3 to GPLv2, for inclusion in Linux.
Thanks to Peter Bergner for doing the leg work to get permission
from everyone.

- addition of the "architected" Power9 CPU table entry, allowing us
to boot in Power9 architected mode under a hypervisor.

- updates to the Power9 PMU code.

- implementation of clear_bit_unlock_is_negative_byte() to optimise
unlock_page().

- Freescale updates from Scott: "Highlights include 8xx breakpoints
and perf, t1042rdb display support, and board updates."

Thanks to:
Al Viro, Andrew Donnellan, Aneesh Kumar K.V, Balbir Singh, Douglas
Miller, Frédéric Weisbecker, Gavin Shan, Madhavan Srinivasan,
Michael Roth, Nathan Fontenot, Naveen N. Rao, Nicholas Piggin, Peter
Bergner, Paul E. McKenney, Rashmica Gupta, Russell Currey, Sahil
Mehta, Stewart Smith"

* tag 'powerpc-4.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (48 commits)
powerpc: Remove leftover cputime_to_nsecs call causing build error
powerpc/mm/hash: Always clear UPRT and Host Radix bits when setting up CPU
powerpc/optprobes: Fix TOC handling in optprobes trampoline
powerpc/pseries: Advertise Hot Plug Event support to firmware
cxl: fix nested locking hang during EEH hotplug
powerpc/xmon: Dump memory in CPU endian format
powerpc/pseries: Revert 'Auto-online hotplugged memory'
powerpc/powernv: Make PCI non-optional
powerpc/64: Implement clear_bit_unlock_is_negative_byte()
powerpc/powernv: Remove unused variable in pnv_pci_sriov_disable()
powerpc/kernel: Remove error message in pcibios_setup_phb_resources()
powerpc/mm: Fix typo in set_pte_at()
pci/hotplug/pnv-php: Disable MSI and PCI device properly
pci/hotplug/pnv-php: Disable surprise hotplug capability on conflicts
pci/hotplug/pnv-php: Remove WARN_ON() in pnv_php_put_slot()
powerpc: Add POWER9 architected mode to cputable
powerpc/perf: use is_kernel_addr macro in perf_get_misc_flags()
powerpc/perf: Avoid FAB_*_MATCH checks for power9
powerpc/perf: Add restrictions to PMC5 in power9 DD1
powerpc/perf: Use Instruction Counter value
...

+8154 -4629
+7 -1
MAINTAINERS
··· 7483 7483 Q: http://patchwork.ozlabs.org/project/linuxppc-dev/list/ 7484 7484 T: git git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git 7485 7485 S: Supported 7486 + F: Documentation/ABI/stable/sysfs-firmware-opal-* 7487 + F: Documentation/devicetree/bindings/powerpc/opal/ 7488 + F: Documentation/devicetree/bindings/rtc/rtc-opal.txt 7489 + F: Documentation/devicetree/bindings/i2c/i2c-opal.txt 7486 7490 F: Documentation/powerpc/ 7487 7491 F: arch/powerpc/ 7488 7492 F: drivers/char/tpm/tpm_ibmvtpm* 7489 7493 F: drivers/crypto/nx/ 7490 7494 F: drivers/crypto/vmx/ 7495 + F: drivers/i2c/busses/i2c-opal.c 7491 7496 F: drivers/net/ethernet/ibm/ibmveth.* 7492 7497 F: drivers/net/ethernet/ibm/ibmvnic.* 7493 7498 F: drivers/pci/hotplug/pnv_php.c 7494 7499 F: drivers/pci/hotplug/rpa* 7500 + F: drivers/rtc/rtc-opal.c 7495 7501 F: drivers/scsi/ibmvscsi/ 7502 + F: drivers/tty/hvc/hvc_opal.c 7496 7503 F: tools/testing/selftests/powerpc 7497 - N: opal 7498 7504 N: /pmac 7499 7505 N: powermac 7500 7506 N: powernv
+1 -1
arch/powerpc/Kconfig
··· 115 115 select HAVE_PERF_REGS 116 116 select HAVE_PERF_USER_STACK_DUMP 117 117 select HAVE_REGS_AND_STACK_ACCESS_API 118 - select HAVE_HW_BREAKPOINT if PERF_EVENTS && PPC_BOOK3S_64 118 + select HAVE_HW_BREAKPOINT if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx) 119 119 select ARCH_WANT_IPC_PARSE_VERSION 120 120 select SPARSE_IRQ 121 121 select IRQ_DOMAIN
+303
arch/powerpc/boot/dts/fsl/kmcent2.dts
··· 1 + /* 2 + * Keymile kmcent2 Device Tree Source, based on T1040RDB DTS 3 + * 4 + * (C) Copyright 2016 5 + * Valentin Longchamp, Keymile AG, valentin.longchamp@keymile.com 6 + * 7 + * Copyright 2014 - 2015 Freescale Semiconductor Inc. 8 + * 9 + * This program is free software; you can redistribute it and/or modify it 10 + * under the terms of the GNU General Public License as published by the 11 + * Free Software Foundation; either version 2 of the License, or (at your 12 + * option) any later version. 13 + */ 14 + 15 + /include/ "t104xsi-pre.dtsi" 16 + 17 + / { 18 + model = "keymile,kmcent2"; 19 + compatible = "keymile,kmcent2"; 20 + 21 + aliases { 22 + front_phy = &front_phy; 23 + }; 24 + 25 + reserved-memory { 26 + #address-cells = <2>; 27 + #size-cells = <2>; 28 + ranges; 29 + 30 + bman_fbpr: bman-fbpr { 31 + size = <0 0x1000000>; 32 + alignment = <0 0x1000000>; 33 + }; 34 + qman_fqd: qman-fqd { 35 + size = <0 0x400000>; 36 + alignment = <0 0x400000>; 37 + }; 38 + qman_pfdr: qman-pfdr { 39 + size = <0 0x2000000>; 40 + alignment = <0 0x2000000>; 41 + }; 42 + }; 43 + 44 + ifc: localbus@ffe124000 { 45 + reg = <0xf 0xfe124000 0 0x2000>; 46 + ranges = <0 0 0xf 0xe8000000 0x04000000 47 + 1 0 0xf 0xfa000000 0x00010000 48 + 2 0 0xf 0xfb000000 0x00010000 49 + 4 0 0xf 0xc0000000 0x08000000 50 + 6 0 0xf 0xd0000000 0x08000000 51 + 7 0 0xf 0xd8000000 0x08000000>; 52 + 53 + nor@0,0 { 54 + #address-cells = <1>; 55 + #size-cells = <1>; 56 + compatible = "cfi-flash"; 57 + reg = <0x0 0x0 0x04000000>; 58 + bank-width = <2>; 59 + device-width = <2>; 60 + }; 61 + 62 + nand@1,0 { 63 + #address-cells = <1>; 64 + #size-cells = <1>; 65 + compatible = "fsl,ifc-nand"; 66 + reg = <0x1 0x0 0x10000>; 67 + }; 68 + 69 + board-control@2,0 { 70 + compatible = "keymile,qriox"; 71 + reg = <0x2 0x0 0x80>; 72 + }; 73 + 74 + chassis-mgmt@6,0 { 75 + compatible = "keymile,bfticu"; 76 + reg = <6 0 0x100>; 77 + interrupt-controller; 78 + interrupt-parent = <&mpic>; 79 + interrupts = <11 1 0 0>; 80 + #interrupt-cells = <1>; 81 + }; 82 + 83 + }; 84 + 85 + memory { 86 + device_type = "memory"; 87 + }; 88 + 89 + dcsr: dcsr@f00000000 { 90 + ranges = <0x00000000 0xf 0x00000000 0x01072000>; 91 + }; 92 + 93 + bportals: bman-portals@ff4000000 { 94 + ranges = <0x0 0xf 0xf4000000 0x2000000>; 95 + }; 96 + 97 + qportals: qman-portals@ff6000000 { 98 + ranges = <0x0 0xf 0xf6000000 0x2000000>; 99 + }; 100 + 101 + soc: soc@ffe000000 { 102 + ranges = <0x00000000 0xf 0xfe000000 0x1000000>; 103 + reg = <0xf 0xfe000000 0 0x00001000>; 104 + 105 + spi@110000 { 106 + network-clock@1 { 107 + compatible = "zarlink,zl30364"; 108 + reg = <1>; 109 + spi-max-frequency = <1000000>; 110 + }; 111 + }; 112 + 113 + sdhc@114000 { 114 + status = "disabled"; 115 + }; 116 + 117 + i2c@118000 { 118 + clock-frequency = <100000>; 119 + 120 + mux@70 { 121 + compatible = "nxp,pca9547"; 122 + reg = <0x70>; 123 + #address-cells = <1>; 124 + #size-cells = <0>; 125 + i2c-mux-idle-disconnect; 126 + 127 + i2c@0 { 128 + reg = <0>; 129 + #address-cells = <1>; 130 + #size-cells = <0>; 131 + 132 + eeprom@54 { 133 + compatible = "24c02"; 134 + reg = <0x54>; 135 + pagesize = <2>; 136 + read-only; 137 + label = "ddr3-spd"; 138 + }; 139 + }; 140 + 141 + i2c@7 { 142 + reg = <7>; 143 + #address-cells = <1>; 144 + #size-cells = <0>; 145 + 146 + temp-sensor@48 { 147 + compatible = "national,lm75"; 148 + reg = <0x48>; 149 + label = "SENSOR_0"; 150 + }; 151 + temp-sensor@4a { 152 + compatible = "national,lm75"; 153 + reg = <0x4a>; 154 + label = "SENSOR_2"; 155 + }; 156 + temp-sensor@4b { 157 + compatible = "national,lm75"; 158 + reg = <0x4b>; 159 + label = "SENSOR_3"; 160 + }; 161 + }; 162 + }; 163 + }; 164 + 165 + i2c@118100 { 166 + clock-frequency = <100000>; 167 + 168 + eeprom@50 { 169 + compatible = "atmel,24c08"; 170 + reg = <0x50>; 171 + pagesize = <16>; 172 + }; 173 + 174 + eeprom@54 { 175 + compatible = "atmel,24c08"; 176 + reg = <0x54>; 177 + pagesize = <16>; 178 + }; 179 + }; 180 + 181 + i2c@119000 { 182 + status = "disabled"; 183 + }; 184 + 185 + i2c@119100 { 186 + status = "disabled"; 187 + }; 188 + 189 + serial2: serial@11d500 { 190 + status = "disabled"; 191 + }; 192 + 193 + serial3: serial@11d600 { 194 + status = "disabled"; 195 + }; 196 + 197 + usb0: usb@210000 { 198 + status = "disabled"; 199 + }; 200 + usb1: usb@211000 { 201 + status = "disabled"; 202 + }; 203 + 204 + display@180000 { 205 + status = "disabled"; 206 + }; 207 + 208 + sata@220000 { 209 + status = "disabled"; 210 + }; 211 + sata@221000 { 212 + status = "disabled"; 213 + }; 214 + 215 + fman@400000 { 216 + ethernet@e0000 { 217 + fixed-link = <0 1 1000 0 0>; 218 + phy-connection-type = "sgmii"; 219 + }; 220 + 221 + ethernet@e2000 { 222 + fixed-link = <1 1 1000 0 0>; 223 + phy-connection-type = "sgmii"; 224 + }; 225 + 226 + ethernet@e4000 { 227 + status = "disabled"; 228 + }; 229 + 230 + ethernet@e6000 { 231 + status = "disabled"; 232 + }; 233 + 234 + ethernet@e8000 { 235 + phy-handle = <&front_phy>; 236 + phy-connection-type = "rgmii"; 237 + }; 238 + 239 + mdio0: mdio@fc000 { 240 + front_phy: ethernet-phy@11 { 241 + reg = <0x11>; 242 + }; 243 + }; 244 + }; 245 + }; 246 + 247 + 248 + pci0: pcie@ffe240000 { 249 + reg = <0xf 0xfe240000 0 0x10000>; 250 + ranges = <0x02000000 0 0xe0000000 0xc 0x00000000 0x0 0x20000000 251 + 0x01000000 0 0x00000000 0xf 0xf8000000 0x0 0x00010000>; 252 + pcie@0 { 253 + ranges = <0x02000000 0 0xe0000000 254 + 0x02000000 0 0xe0000000 255 + 0 0x20000000 256 + 257 + 0x01000000 0 0x00000000 258 + 0x01000000 0 0x00000000 259 + 0 0x00010000>; 260 + }; 261 + }; 262 + 263 + pci1: pcie@ffe250000 { 264 + status = "disabled"; 265 + }; 266 + 267 + pci2: pcie@ffe260000 { 268 + status = "disabled"; 269 + }; 270 + 271 + pci3: pcie@ffe270000 { 272 + status = "disabled"; 273 + }; 274 + 275 + qe: qe@ffe140000 { 276 + ranges = <0x0 0xf 0xfe140000 0x40000>; 277 + reg = <0xf 0xfe140000 0 0x480>; 278 + brg-frequency = <0>; 279 + bus-frequency = <0>; 280 + 281 + si1: si@700 { 282 + compatible = "fsl,t1040-qe-si"; 283 + reg = <0x700 0x80>; 284 + }; 285 + 286 + siram1: siram@1000 { 287 + compatible = "fsl,t1040-qe-siram"; 288 + reg = <0x1000 0x800>; 289 + }; 290 + 291 + ucc_hdlc: ucc@2000 { 292 + device_type = "hdlc"; 293 + compatible = "fsl,ucc-hdlc"; 294 + rx-clock-name = "clk9"; 295 + tx-clock-name = "clk9"; 296 + fsl,tx-timeslot-mask = <0xfffffffe>; 297 + fsl,rx-timeslot-mask = <0xfffffffe>; 298 + fsl,siram-entry-id = <0>; 299 + }; 300 + }; 301 + }; 302 + 303 + #include "t1040si-post.dtsi"
+4
arch/powerpc/boot/dts/fsl/kmcoge4.dts
··· 83 83 }; 84 84 }; 85 85 86 + sdhc@114000 { 87 + status = "disabled"; 88 + }; 89 + 86 90 i2c@119000 { 87 91 status = "disabled"; 88 92 };
-220
arch/powerpc/configs/85xx/kmp204x_defconfig
··· 1 - CONFIG_PPC_85xx=y 2 - CONFIG_SMP=y 3 - CONFIG_NR_CPUS=8 4 - CONFIG_SYSVIPC=y 5 - CONFIG_POSIX_MQUEUE=y 6 - CONFIG_AUDIT=y 7 - CONFIG_NO_HZ=y 8 - CONFIG_HIGH_RES_TIMERS=y 9 - CONFIG_BSD_PROCESS_ACCT=y 10 - CONFIG_IKCONFIG=y 11 - CONFIG_IKCONFIG_PROC=y 12 - CONFIG_LOG_BUF_SHIFT=14 13 - CONFIG_CGROUPS=y 14 - CONFIG_CGROUP_SCHED=y 15 - CONFIG_RELAY=y 16 - CONFIG_BLK_DEV_INITRD=y 17 - CONFIG_KALLSYMS_ALL=y 18 - CONFIG_EMBEDDED=y 19 - CONFIG_PERF_EVENTS=y 20 - CONFIG_SLAB=y 21 - CONFIG_MODULES=y 22 - CONFIG_MODULE_UNLOAD=y 23 - CONFIG_MODULE_FORCE_UNLOAD=y 24 - CONFIG_MODVERSIONS=y 25 - # CONFIG_BLK_DEV_BSG is not set 26 - CONFIG_PARTITION_ADVANCED=y 27 - CONFIG_MAC_PARTITION=y 28 - CONFIG_CORENET_GENERIC=y 29 - CONFIG_MPIC_MSGR=y 30 - CONFIG_HIGHMEM=y 31 - # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 32 - CONFIG_BINFMT_MISC=m 33 - CONFIG_KEXEC=y 34 - CONFIG_FORCE_MAX_ZONEORDER=13 35 - CONFIG_PCI=y 36 - CONFIG_PCIEPORTBUS=y 37 - # CONFIG_PCIEASPM is not set 38 - CONFIG_PCI_MSI=y 39 - CONFIG_ADVANCED_OPTIONS=y 40 - CONFIG_LOWMEM_SIZE_BOOL=y 41 - CONFIG_LOWMEM_SIZE=0x20000000 42 - CONFIG_NET=y 43 - CONFIG_PACKET=y 44 - CONFIG_UNIX=y 45 - CONFIG_XFRM_USER=y 46 - CONFIG_XFRM_SUB_POLICY=y 47 - CONFIG_XFRM_STATISTICS=y 48 - CONFIG_NET_KEY=y 49 - CONFIG_NET_KEY_MIGRATE=y 50 - CONFIG_INET=y 51 - CONFIG_IP_MULTICAST=y 52 - CONFIG_IP_ADVANCED_ROUTER=y 53 - CONFIG_IP_MULTIPLE_TABLES=y 54 - CONFIG_IP_ROUTE_MULTIPATH=y 55 - CONFIG_IP_ROUTE_VERBOSE=y 56 - CONFIG_IP_PNP=y 57 - CONFIG_IP_PNP_DHCP=y 58 - CONFIG_IP_PNP_BOOTP=y 59 - CONFIG_IP_PNP_RARP=y 60 - CONFIG_NET_IPIP=y 61 - CONFIG_IP_MROUTE=y 62 - CONFIG_IP_PIMSM_V1=y 63 - CONFIG_IP_PIMSM_V2=y 64 - CONFIG_INET_AH=y 65 - CONFIG_INET_ESP=y 66 - CONFIG_INET_IPCOMP=y 67 - CONFIG_IPV6=y 68 - CONFIG_IP_SCTP=m 69 - CONFIG_TIPC=y 70 - CONFIG_NET_SCHED=y 71 - CONFIG_NET_SCH_CBQ=y 72 - CONFIG_NET_SCH_HTB=y 73 - CONFIG_NET_SCH_HFSC=y 74 - CONFIG_NET_SCH_PRIO=y 75 - CONFIG_NET_SCH_MULTIQ=y 76 - CONFIG_NET_SCH_RED=y 77 - CONFIG_NET_SCH_SFQ=y 78 - CONFIG_NET_SCH_TEQL=y 79 - CONFIG_NET_SCH_TBF=y 80 - CONFIG_NET_SCH_GRED=y 81 - CONFIG_NET_CLS_BASIC=y 82 - CONFIG_NET_CLS_TCINDEX=y 83 - CONFIG_NET_CLS_U32=y 84 - CONFIG_CLS_U32_PERF=y 85 - CONFIG_CLS_U32_MARK=y 86 - CONFIG_NET_CLS_FLOW=y 87 - CONFIG_NET_CLS_CGROUP=y 88 - CONFIG_UEVENT_HELPER_PATH="/sbin/mdev" 89 - CONFIG_DEVTMPFS=y 90 - CONFIG_MTD=y 91 - CONFIG_MTD_CMDLINE_PARTS=y 92 - CONFIG_MTD_BLOCK=y 93 - CONFIG_MTD_CFI=y 94 - CONFIG_MTD_CFI_AMDSTD=y 95 - CONFIG_MTD_PHYSMAP_OF=y 96 - CONFIG_MTD_PHRAM=y 97 - CONFIG_MTD_NAND=y 98 - CONFIG_MTD_NAND_ECC_BCH=y 99 - CONFIG_MTD_NAND_FSL_ELBC=y 100 - CONFIG_MTD_UBI=y 101 - CONFIG_MTD_UBI_GLUEBI=y 102 - CONFIG_BLK_DEV_LOOP=y 103 - CONFIG_BLK_DEV_RAM=y 104 - CONFIG_BLK_DEV_RAM_COUNT=2 105 - CONFIG_BLK_DEV_RAM_SIZE=2048 106 - CONFIG_EEPROM_AT24=y 107 - CONFIG_SCSI=y 108 - CONFIG_BLK_DEV_SD=y 109 - CONFIG_CHR_DEV_ST=y 110 - CONFIG_BLK_DEV_SR=y 111 - CONFIG_CHR_DEV_SG=y 112 - CONFIG_SCSI_LOGGING=y 113 - CONFIG_SCSI_SYM53C8XX_2=y 114 - CONFIG_NETDEVICES=y 115 - # CONFIG_NET_VENDOR_3COM is not set 116 - # CONFIG_NET_VENDOR_ADAPTEC is not set 117 - # CONFIG_NET_VENDOR_ALTEON is not set 118 - # CONFIG_NET_VENDOR_AMD is not set 119 - # CONFIG_NET_VENDOR_ATHEROS is not set 120 - # CONFIG_NET_VENDOR_BROADCOM is not set 121 - # CONFIG_NET_VENDOR_BROCADE is not set 122 - # CONFIG_NET_VENDOR_CHELSIO is not set 123 - # CONFIG_NET_VENDOR_CISCO is not set 124 - # CONFIG_NET_VENDOR_DEC is not set 125 - # CONFIG_NET_VENDOR_DLINK is not set 126 - # CONFIG_NET_VENDOR_EMULEX is not set 127 - # CONFIG_NET_VENDOR_EXAR is not set 128 - CONFIG_FSL_PQ_MDIO=y 129 - CONFIG_FSL_XGMAC_MDIO=y 130 - # CONFIG_NET_VENDOR_HP is not set 131 - # CONFIG_NET_VENDOR_INTEL is not set 132 - # CONFIG_NET_VENDOR_MARVELL is not set 133 - # CONFIG_NET_VENDOR_MELLANOX is not set 134 - # CONFIG_NET_VENDOR_MICREL is not set 135 - # CONFIG_NET_VENDOR_MICROCHIP is not set 136 - # CONFIG_NET_VENDOR_MYRI is not set 137 - # CONFIG_NET_VENDOR_NATSEMI is not set 138 - # CONFIG_NET_VENDOR_NVIDIA is not set 139 - # CONFIG_NET_VENDOR_OKI is not set 140 - # CONFIG_NET_PACKET_ENGINE is not set 141 - # CONFIG_NET_VENDOR_QLOGIC is not set 142 - # CONFIG_NET_VENDOR_REALTEK is not set 143 - # CONFIG_NET_VENDOR_RDC is not set 144 - # CONFIG_NET_VENDOR_SEEQ is not set 145 - # CONFIG_NET_VENDOR_SILAN is not set 146 - # CONFIG_NET_VENDOR_SIS is not set 147 - # CONFIG_NET_VENDOR_SMSC is not set 148 - # CONFIG_NET_VENDOR_STMICRO is not set 149 - # CONFIG_NET_VENDOR_SUN is not set 150 - # CONFIG_NET_VENDOR_TEHUTI is not set 151 - # CONFIG_NET_VENDOR_TI is not set 152 - # CONFIG_NET_VENDOR_VIA is not set 153 - # CONFIG_NET_VENDOR_WIZNET is not set 154 - # CONFIG_NET_VENDOR_XILINX is not set 155 - CONFIG_MARVELL_PHY=y 156 - CONFIG_VITESSE_PHY=y 157 - CONFIG_FIXED_PHY=y 158 - # CONFIG_WLAN is not set 159 - # CONFIG_INPUT_MOUSEDEV is not set 160 - # CONFIG_INPUT_KEYBOARD is not set 161 - # CONFIG_INPUT_MOUSE is not set 162 - CONFIG_SERIO_LIBPS2=y 163 - # CONFIG_LEGACY_PTYS is not set 164 - CONFIG_PPC_EPAPR_HV_BYTECHAN=y 165 - CONFIG_SERIAL_8250=y 166 - CONFIG_SERIAL_8250_CONSOLE=y 167 - CONFIG_SERIAL_8250_MANY_PORTS=y 168 - CONFIG_SERIAL_8250_DETECT_IRQ=y 169 - CONFIG_SERIAL_8250_RSA=y 170 - CONFIG_NVRAM=y 171 - CONFIG_I2C=y 172 - CONFIG_I2C_CHARDEV=y 173 - CONFIG_I2C_MUX=y 174 - CONFIG_I2C_MUX_PCA954x=y 175 - CONFIG_I2C_MPC=y 176 - CONFIG_SPI=y 177 - CONFIG_SPI_FSL_SPI=y 178 - CONFIG_SPI_FSL_ESPI=y 179 - CONFIG_SPI_SPIDEV=m 180 - CONFIG_PTP_1588_CLOCK=y 181 - # CONFIG_HWMON is not set 182 - # CONFIG_USB_SUPPORT is not set 183 - CONFIG_EDAC=y 184 - CONFIG_EDAC_MM_EDAC=y 185 - CONFIG_EDAC_MPC85XX=y 186 - CONFIG_RTC_CLASS=y 187 - CONFIG_RTC_DRV_DS3232=y 188 - CONFIG_RTC_DRV_CMOS=y 189 - CONFIG_UIO=y 190 - CONFIG_STAGING=y 191 - CONFIG_CLK_QORIQ=y 192 - CONFIG_EXT2_FS=y 193 - CONFIG_NTFS_FS=y 194 - CONFIG_PROC_KCORE=y 195 - CONFIG_TMPFS=y 196 - CONFIG_JFFS2_FS=y 197 - CONFIG_UBIFS_FS=y 198 - CONFIG_CRAMFS=y 199 - CONFIG_SQUASHFS=y 200 - CONFIG_SQUASHFS_XZ=y 201 - CONFIG_NFS_FS=y 202 - CONFIG_NFS_V4=y 203 - CONFIG_ROOT_NFS=y 204 - CONFIG_NLS_ISO8859_1=y 205 - CONFIG_NLS_UTF8=m 206 - CONFIG_CRC_ITU_T=m 207 - CONFIG_DEBUG_INFO=y 208 - CONFIG_MAGIC_SYSRQ=y 209 - CONFIG_DEBUG_SHIRQ=y 210 - CONFIG_DETECT_HUNG_TASK=y 211 - CONFIG_SCHEDSTATS=y 212 - CONFIG_RCU_TRACE=y 213 - CONFIG_UPROBE_EVENT=y 214 - CONFIG_CRYPTO_NULL=y 215 - CONFIG_CRYPTO_PCBC=m 216 - CONFIG_CRYPTO_MD4=y 217 - CONFIG_CRYPTO_SHA256=y 218 - CONFIG_CRYPTO_SHA512=y 219 - # CONFIG_CRYPTO_ANSI_CPRNG is not set 220 - CONFIG_CRYPTO_DEV_FSL_CAAM=y
-1
arch/powerpc/configs/pseries_defconfig
··· 58 58 CONFIG_IRQ_ALL_CPUS=y 59 59 CONFIG_MEMORY_HOTPLUG=y 60 60 CONFIG_MEMORY_HOTREMOVE=y 61 - CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y 62 61 CONFIG_KSM=y 63 62 CONFIG_TRANSPARENT_HUGEPAGE=y 64 63 CONFIG_PPC_64K_PAGES=y
+28
arch/powerpc/include/asm/bitops.h
··· 154 154 return test_and_change_bits(BIT_MASK(nr), addr + BIT_WORD(nr)) != 0; 155 155 } 156 156 157 + #ifdef CONFIG_PPC64 158 + static __inline__ unsigned long clear_bit_unlock_return_word(int nr, 159 + volatile unsigned long *addr) 160 + { 161 + unsigned long old, t; 162 + unsigned long *p = (unsigned long *)addr + BIT_WORD(nr); 163 + unsigned long mask = BIT_MASK(nr); 164 + 165 + __asm__ __volatile__ ( 166 + PPC_RELEASE_BARRIER 167 + "1:" PPC_LLARX(%0,0,%3,0) "\n" 168 + "andc %1,%0,%2\n" 169 + PPC405_ERR77(0,%3) 170 + PPC_STLCX "%1,0,%3\n" 171 + "bne- 1b\n" 172 + : "=&r" (old), "=&r" (t) 173 + : "r" (mask), "r" (p) 174 + : "cc", "memory"); 175 + 176 + return old; 177 + } 178 + 179 + /* This is a special function for mm/filemap.c */ 180 + #define clear_bit_unlock_is_negative_byte(nr, addr) \ 181 + (clear_bit_unlock_return_word(nr, addr) & BIT_MASK(PG_waiters)) 182 + 183 + #endif /* CONFIG_PPC64 */ 184 + 157 185 #include <asm-generic/bitops/non-atomic.h> 158 186 159 187 static __inline__ void __clear_bit_unlock(int nr, volatile unsigned long *addr)
+2
arch/powerpc/include/asm/pnv-pci.h
··· 57 57 uint64_t id; 58 58 char *name; 59 59 int slot_no; 60 + unsigned int flags; 61 + #define PNV_PHP_FLAG_BROKEN_PDC 0x1 60 62 struct kref kref; 61 63 #define PNV_PHP_STATE_INITIALIZED 0 62 64 #define PNV_PHP_STATE_REGISTERED 1
-1
arch/powerpc/include/asm/ppc_asm.h
··· 505 505 #define MTMSRD(r) mtmsrd r 506 506 #define MTMSR_EERI(reg) mtmsrd reg,1 507 507 #else 508 - #define FIX_SRR1(ra, rb) 509 508 #ifndef CONFIG_40x 510 509 #define RFI rfi 511 510 #else
+1 -1
arch/powerpc/include/asm/processor.h
··· 225 225 #ifdef CONFIG_PPC64 226 226 unsigned long start_tb; /* Start purr when proc switched in */ 227 227 unsigned long accum_tb; /* Total accumulated purr for process */ 228 + #endif 228 229 #ifdef CONFIG_HAVE_HW_BREAKPOINT 229 230 struct perf_event *ptrace_bps[HBP_NUM]; 230 231 /* ··· 234 233 */ 235 234 struct perf_event *last_hit_ubp; 236 235 #endif /* CONFIG_HAVE_HW_BREAKPOINT */ 237 - #endif 238 236 struct arch_hw_breakpoint hw_brk; /* info on the hardware breakpoint */ 239 237 unsigned long trap_nr; /* last trap # on this thread */ 240 238 u8 load_fp;
+1
arch/powerpc/include/asm/prom.h
··· 153 153 #define OV5_XCMO 0x0440 /* Page Coalescing */ 154 154 #define OV5_TYPE1_AFFINITY 0x0580 /* Type 1 NUMA affinity */ 155 155 #define OV5_PRRN 0x0540 /* Platform Resource Reassignment */ 156 + #define OV5_HP_EVT 0x0604 /* Hot Plug Event support */ 156 157 #define OV5_RESIZE_HPT 0x0601 /* Hash Page Table resizing */ 157 158 #define OV5_PFO_HW_RNG 0x1180 /* PFO Random Number Generator */ 158 159 #define OV5_PFO_HW_842 0x1140 /* PFO Compression Accelerator */
+2
arch/powerpc/include/asm/reg.h
··· 552 552 #define SPRN_IBAT7U 0x236 /* Instruction BAT 7 Upper Register */ 553 553 #define SPRN_ICMP 0x3D5 /* Instruction TLB Compare Register */ 554 554 #define SPRN_ICTC 0x3FB /* Instruction Cache Throttling Control Reg */ 555 + #ifndef SPRN_ICTRL 555 556 #define SPRN_ICTRL 0x3F3 /* 1011 7450 icache and interrupt ctrl */ 557 + #endif 556 558 #define ICTRL_EICE 0x08000000 /* enable icache parity errs */ 557 559 #define ICTRL_EDC 0x04000000 /* enable dcache parity errs */ 558 560 #define ICTRL_EICP 0x00000100 /* enable icache par. check */
+11
arch/powerpc/include/asm/reg_8xx.h
··· 28 28 /* Special MSR manipulation registers */ 29 29 #define SPRN_EIE 80 /* External interrupt enable (EE=1, RI=1) */ 30 30 #define SPRN_EID 81 /* External interrupt disable (EE=0, RI=1) */ 31 + #define SPRN_NRI 82 /* Non recoverable interrupt (EE=0, RI=0) */ 32 + 33 + /* Debug registers */ 34 + #define SPRN_CMPA 144 35 + #define SPRN_COUNTA 150 36 + #define SPRN_CMPE 152 37 + #define SPRN_CMPF 153 38 + #define SPRN_LCTRL1 156 39 + #define SPRN_LCTRL2 157 40 + #define SPRN_ICTRL 158 41 + #define SPRN_BAR 159 31 42 32 43 /* Commands. Only the first few are available to the instruction cache. 33 44 */
+2
arch/powerpc/include/asm/rtas.h
··· 307 307 union { 308 308 __be32 drc_index; 309 309 __be32 drc_count; 310 + struct { __be32 count, index; } ic; 310 311 char drc_name[1]; 311 312 } _drc_u; 312 313 }; ··· 324 323 #define PSERIES_HP_ELOG_ID_DRC_NAME 1 325 324 #define PSERIES_HP_ELOG_ID_DRC_INDEX 2 326 325 #define PSERIES_HP_ELOG_ID_DRC_COUNT 3 326 + #define PSERIES_HP_ELOG_ID_DRC_IC 4 327 327 328 328 struct pseries_errorlog *get_pseries_errorlog(struct rtas_error_log *log, 329 329 uint16_t section_id);
+369 -397
arch/powerpc/kernel/asm-offsets.c
··· 72 72 #include <asm/fixmap.h> 73 73 #endif 74 74 75 + #define STACK_PT_REGS_OFFSET(sym, val) \ 76 + DEFINE(sym, STACK_FRAME_OVERHEAD + offsetof(struct pt_regs, val)) 77 + 75 78 int main(void) 76 79 { 77 - DEFINE(THREAD, offsetof(struct task_struct, thread)); 78 - DEFINE(MM, offsetof(struct task_struct, mm)); 79 - DEFINE(MMCONTEXTID, offsetof(struct mm_struct, context.id)); 80 + OFFSET(THREAD, task_struct, thread); 81 + OFFSET(MM, task_struct, mm); 82 + OFFSET(MMCONTEXTID, mm_struct, context.id); 80 83 #ifdef CONFIG_PPC64 81 84 DEFINE(SIGSEGV, SIGSEGV); 82 85 DEFINE(NMI_MASK, NMI_MASK); 83 - DEFINE(TASKTHREADPPR, offsetof(struct task_struct, thread.ppr)); 86 + OFFSET(TASKTHREADPPR, task_struct, thread.ppr); 84 87 #else 85 - DEFINE(THREAD_INFO, offsetof(struct task_struct, stack)); 88 + OFFSET(THREAD_INFO, task_struct, stack); 86 89 DEFINE(THREAD_INFO_GAP, _ALIGN_UP(sizeof(struct thread_info), 16)); 87 - DEFINE(KSP_LIMIT, offsetof(struct thread_struct, ksp_limit)); 90 + OFFSET(KSP_LIMIT, thread_struct, ksp_limit); 88 91 #endif /* CONFIG_PPC64 */ 89 92 90 93 #ifdef CONFIG_LIVEPATCH 91 - DEFINE(TI_livepatch_sp, offsetof(struct thread_info, livepatch_sp)); 94 + OFFSET(TI_livepatch_sp, thread_info, livepatch_sp); 92 95 #endif 93 96 94 - DEFINE(KSP, offsetof(struct thread_struct, ksp)); 95 - DEFINE(PT_REGS, offsetof(struct thread_struct, regs)); 97 + OFFSET(KSP, thread_struct, ksp); 98 + OFFSET(PT_REGS, thread_struct, regs); 96 99 #ifdef CONFIG_BOOKE 97 - DEFINE(THREAD_NORMSAVES, offsetof(struct thread_struct, normsave[0])); 100 + OFFSET(THREAD_NORMSAVES, thread_struct, normsave[0]); 98 101 #endif 99 - DEFINE(THREAD_FPEXC_MODE, offsetof(struct thread_struct, fpexc_mode)); 100 - DEFINE(THREAD_FPSTATE, offsetof(struct thread_struct, fp_state)); 101 - DEFINE(THREAD_FPSAVEAREA, offsetof(struct thread_struct, fp_save_area)); 102 - DEFINE(FPSTATE_FPSCR, offsetof(struct thread_fp_state, fpscr)); 103 - DEFINE(THREAD_LOAD_FP, offsetof(struct thread_struct, load_fp)); 102 + OFFSET(THREAD_FPEXC_MODE, thread_struct, fpexc_mode); 103 + OFFSET(THREAD_FPSTATE, thread_struct, fp_state); 104 + OFFSET(THREAD_FPSAVEAREA, thread_struct, fp_save_area); 105 + OFFSET(FPSTATE_FPSCR, thread_fp_state, fpscr); 106 + OFFSET(THREAD_LOAD_FP, thread_struct, load_fp); 104 107 #ifdef CONFIG_ALTIVEC 105 - DEFINE(THREAD_VRSTATE, offsetof(struct thread_struct, vr_state)); 106 - DEFINE(THREAD_VRSAVEAREA, offsetof(struct thread_struct, vr_save_area)); 107 - DEFINE(THREAD_VRSAVE, offsetof(struct thread_struct, vrsave)); 108 - DEFINE(THREAD_USED_VR, offsetof(struct thread_struct, used_vr)); 109 - DEFINE(VRSTATE_VSCR, offsetof(struct thread_vr_state, vscr)); 110 - DEFINE(THREAD_LOAD_VEC, offsetof(struct thread_struct, load_vec)); 108 + OFFSET(THREAD_VRSTATE, thread_struct, vr_state); 109 + OFFSET(THREAD_VRSAVEAREA, thread_struct, vr_save_area); 110 + OFFSET(THREAD_VRSAVE, thread_struct, vrsave); 111 + OFFSET(THREAD_USED_VR, thread_struct, used_vr); 112 + OFFSET(VRSTATE_VSCR, thread_vr_state, vscr); 113 + OFFSET(THREAD_LOAD_VEC, thread_struct, load_vec); 111 114 #endif /* CONFIG_ALTIVEC */ 112 115 #ifdef CONFIG_VSX 113 - DEFINE(THREAD_USED_VSR, offsetof(struct thread_struct, used_vsr)); 116 + OFFSET(THREAD_USED_VSR, thread_struct, used_vsr); 114 117 #endif /* CONFIG_VSX */ 115 118 #ifdef CONFIG_PPC64 116 - DEFINE(KSP_VSID, offsetof(struct thread_struct, ksp_vsid)); 119 + OFFSET(KSP_VSID, thread_struct, ksp_vsid); 117 120 #else /* CONFIG_PPC64 */ 118 - DEFINE(PGDIR, offsetof(struct thread_struct, pgdir)); 121 + OFFSET(PGDIR, thread_struct, pgdir); 119 122 #ifdef CONFIG_SPE 120 - DEFINE(THREAD_EVR0, offsetof(struct thread_struct, evr[0])); 121 - DEFINE(THREAD_ACC, offsetof(struct thread_struct, acc)); 122 - DEFINE(THREAD_SPEFSCR, offsetof(struct thread_struct, spefscr)); 123 - DEFINE(THREAD_USED_SPE, offsetof(struct thread_struct, used_spe)); 123 + OFFSET(THREAD_EVR0, thread_struct, evr[0]); 124 + OFFSET(THREAD_ACC, thread_struct, acc); 125 + OFFSET(THREAD_SPEFSCR, thread_struct, spefscr); 126 + OFFSET(THREAD_USED_SPE, thread_struct, used_spe); 124 127 #endif /* CONFIG_SPE */ 125 128 #endif /* CONFIG_PPC64 */ 126 129 #if defined(CONFIG_4xx) || defined(CONFIG_BOOKE) 127 - DEFINE(THREAD_DBCR0, offsetof(struct thread_struct, debug.dbcr0)); 130 + OFFSET(THREAD_DBCR0, thread_struct, debug.dbcr0); 128 131 #endif 129 132 #ifdef CONFIG_KVM_BOOK3S_32_HANDLER 130 - DEFINE(THREAD_KVM_SVCPU, offsetof(struct thread_struct, kvm_shadow_vcpu)); 133 + OFFSET(THREAD_KVM_SVCPU, thread_struct, kvm_shadow_vcpu); 131 134 #endif 132 135 #if defined(CONFIG_KVM) && defined(CONFIG_BOOKE) 133 - DEFINE(THREAD_KVM_VCPU, offsetof(struct thread_struct, kvm_vcpu)); 136 + OFFSET(THREAD_KVM_VCPU, thread_struct, kvm_vcpu); 134 137 #endif 135 138 136 139 #ifdef CONFIG_PPC_TRANSACTIONAL_MEM 137 - DEFINE(PACATMSCRATCH, offsetof(struct paca_struct, tm_scratch)); 138 - DEFINE(THREAD_TM_TFHAR, offsetof(struct thread_struct, tm_tfhar)); 139 - DEFINE(THREAD_TM_TEXASR, offsetof(struct thread_struct, tm_texasr)); 140 - DEFINE(THREAD_TM_TFIAR, offsetof(struct thread_struct, tm_tfiar)); 141 - DEFINE(THREAD_TM_TAR, offsetof(struct thread_struct, tm_tar)); 142 - DEFINE(THREAD_TM_PPR, offsetof(struct thread_struct, tm_ppr)); 143 - DEFINE(THREAD_TM_DSCR, offsetof(struct thread_struct, tm_dscr)); 144 - DEFINE(PT_CKPT_REGS, offsetof(struct thread_struct, ckpt_regs)); 145 - DEFINE(THREAD_CKVRSTATE, offsetof(struct thread_struct, 146 - ckvr_state)); 147 - DEFINE(THREAD_CKVRSAVE, offsetof(struct thread_struct, 148 - ckvrsave)); 149 - DEFINE(THREAD_CKFPSTATE, offsetof(struct thread_struct, 150 - ckfp_state)); 140 + OFFSET(PACATMSCRATCH, paca_struct, tm_scratch); 141 + OFFSET(THREAD_TM_TFHAR, thread_struct, tm_tfhar); 142 + OFFSET(THREAD_TM_TEXASR, thread_struct, tm_texasr); 143 + OFFSET(THREAD_TM_TFIAR, thread_struct, tm_tfiar); 144 + OFFSET(THREAD_TM_TAR, thread_struct, tm_tar); 145 + OFFSET(THREAD_TM_PPR, thread_struct, tm_ppr); 146 + OFFSET(THREAD_TM_DSCR, thread_struct, tm_dscr); 147 + OFFSET(PT_CKPT_REGS, thread_struct, ckpt_regs); 148 + OFFSET(THREAD_CKVRSTATE, thread_struct, ckvr_state); 149 + OFFSET(THREAD_CKVRSAVE, thread_struct, ckvrsave); 150 + OFFSET(THREAD_CKFPSTATE, thread_struct, ckfp_state); 151 151 /* Local pt_regs on stack for Transactional Memory funcs. */ 152 152 DEFINE(TM_FRAME_SIZE, STACK_FRAME_OVERHEAD + 153 153 sizeof(struct pt_regs) + 16); 154 154 #endif /* CONFIG_PPC_TRANSACTIONAL_MEM */ 155 155 156 - DEFINE(TI_FLAGS, offsetof(struct thread_info, flags)); 157 - DEFINE(TI_LOCAL_FLAGS, offsetof(struct thread_info, local_flags)); 158 - DEFINE(TI_PREEMPT, offsetof(struct thread_info, preempt_count)); 159 - DEFINE(TI_TASK, offsetof(struct thread_info, task)); 160 - DEFINE(TI_CPU, offsetof(struct thread_info, cpu)); 156 + OFFSET(TI_FLAGS, thread_info, flags); 157 + OFFSET(TI_LOCAL_FLAGS, thread_info, local_flags); 158 + OFFSET(TI_PREEMPT, thread_info, preempt_count); 159 + OFFSET(TI_TASK, thread_info, task); 160 + OFFSET(TI_CPU, thread_info, cpu); 161 161 162 162 #ifdef CONFIG_PPC64 163 - DEFINE(DCACHEL1BLOCKSIZE, offsetof(struct ppc64_caches, l1d.block_size)); 164 - DEFINE(DCACHEL1LOGBLOCKSIZE, offsetof(struct ppc64_caches, l1d.log_block_size)); 165 - DEFINE(DCACHEL1BLOCKSPERPAGE, offsetof(struct ppc64_caches, l1d.blocks_per_page)); 166 - DEFINE(ICACHEL1BLOCKSIZE, offsetof(struct ppc64_caches, l1i.block_size)); 167 - DEFINE(ICACHEL1LOGBLOCKSIZE, offsetof(struct ppc64_caches, l1i.log_block_size)); 168 - DEFINE(ICACHEL1BLOCKSPERPAGE, offsetof(struct ppc64_caches, l1i.blocks_per_page)); 163 + OFFSET(DCACHEL1BLOCKSIZE, ppc64_caches, l1d.block_size); 164 + OFFSET(DCACHEL1LOGBLOCKSIZE, ppc64_caches, l1d.log_block_size); 165 + OFFSET(DCACHEL1BLOCKSPERPAGE, ppc64_caches, l1d.blocks_per_page); 166 + OFFSET(ICACHEL1BLOCKSIZE, ppc64_caches, l1i.block_size); 167 + OFFSET(ICACHEL1LOGBLOCKSIZE, ppc64_caches, l1i.log_block_size); 168 + OFFSET(ICACHEL1BLOCKSPERPAGE, ppc64_caches, l1i.blocks_per_page); 169 169 /* paca */ 170 170 DEFINE(PACA_SIZE, sizeof(struct paca_struct)); 171 - DEFINE(PACAPACAINDEX, offsetof(struct paca_struct, paca_index)); 172 - DEFINE(PACAPROCSTART, offsetof(struct paca_struct, cpu_start)); 173 - DEFINE(PACAKSAVE, offsetof(struct paca_struct, kstack)); 174 - DEFINE(PACACURRENT, offsetof(struct paca_struct, __current)); 175 - DEFINE(PACASAVEDMSR, offsetof(struct paca_struct, saved_msr)); 176 - DEFINE(PACASTABRR, offsetof(struct paca_struct, stab_rr)); 177 - DEFINE(PACAR1, offsetof(struct paca_struct, saved_r1)); 178 - DEFINE(PACATOC, offsetof(struct paca_struct, kernel_toc)); 179 - DEFINE(PACAKBASE, offsetof(struct paca_struct, kernelbase)); 180 - DEFINE(PACAKMSR, offsetof(struct paca_struct, kernel_msr)); 181 - DEFINE(PACASOFTIRQEN, offsetof(struct paca_struct, soft_enabled)); 182 - DEFINE(PACAIRQHAPPENED, offsetof(struct paca_struct, irq_happened)); 171 + OFFSET(PACAPACAINDEX, paca_struct, paca_index); 172 + OFFSET(PACAPROCSTART, paca_struct, cpu_start); 173 + OFFSET(PACAKSAVE, paca_struct, kstack); 174 + OFFSET(PACACURRENT, paca_struct, __current); 175 + OFFSET(PACASAVEDMSR, paca_struct, saved_msr); 176 + OFFSET(PACASTABRR, paca_struct, stab_rr); 177 + OFFSET(PACAR1, paca_struct, saved_r1); 178 + OFFSET(PACATOC, paca_struct, kernel_toc); 179 + OFFSET(PACAKBASE, paca_struct, kernelbase); 180 + OFFSET(PACAKMSR, paca_struct, kernel_msr); 181 + OFFSET(PACASOFTIRQEN, paca_struct, soft_enabled); 182 + OFFSET(PACAIRQHAPPENED, paca_struct, irq_happened); 183 183 #ifdef CONFIG_PPC_BOOK3S 184 - DEFINE(PACACONTEXTID, offsetof(struct paca_struct, mm_ctx_id)); 184 + OFFSET(PACACONTEXTID, paca_struct, mm_ctx_id); 185 185 #ifdef CONFIG_PPC_MM_SLICES 186 - DEFINE(PACALOWSLICESPSIZE, offsetof(struct paca_struct, 187 - mm_ctx_low_slices_psize)); 188 - DEFINE(PACAHIGHSLICEPSIZE, offsetof(struct paca_struct, 189 - mm_ctx_high_slices_psize)); 186 + OFFSET(PACALOWSLICESPSIZE, paca_struct, mm_ctx_low_slices_psize); 187 + OFFSET(PACAHIGHSLICEPSIZE, paca_struct, mm_ctx_high_slices_psize); 190 188 DEFINE(MMUPSIZEDEFSIZE, sizeof(struct mmu_psize_def)); 191 189 #endif /* CONFIG_PPC_MM_SLICES */ 192 190 #endif 193 191 194 192 #ifdef CONFIG_PPC_BOOK3E 195 - DEFINE(PACAPGD, offsetof(struct paca_struct, pgd)); 196 - DEFINE(PACA_KERNELPGD, offsetof(struct paca_struct, kernel_pgd)); 197 - DEFINE(PACA_EXGEN, offsetof(struct paca_struct, exgen)); 198 - DEFINE(PACA_EXTLB, offsetof(struct paca_struct, extlb)); 199 - DEFINE(PACA_EXMC, offsetof(struct paca_struct, exmc)); 200 - DEFINE(PACA_EXCRIT, offsetof(struct paca_struct, excrit)); 201 - DEFINE(PACA_EXDBG, offsetof(struct paca_struct, exdbg)); 202 - DEFINE(PACA_MC_STACK, offsetof(struct paca_struct, mc_kstack)); 203 - DEFINE(PACA_CRIT_STACK, offsetof(struct paca_struct, crit_kstack)); 204 - DEFINE(PACA_DBG_STACK, offsetof(struct paca_struct, dbg_kstack)); 205 - DEFINE(PACA_TCD_PTR, offsetof(struct paca_struct, tcd_ptr)); 193 + OFFSET(PACAPGD, paca_struct, pgd); 194 + OFFSET(PACA_KERNELPGD, paca_struct, kernel_pgd); 195 + OFFSET(PACA_EXGEN, paca_struct, exgen); 196 + OFFSET(PACA_EXTLB, paca_struct, extlb); 197 + OFFSET(PACA_EXMC, paca_struct, exmc); 198 + OFFSET(PACA_EXCRIT, paca_struct, excrit); 199 + OFFSET(PACA_EXDBG, paca_struct, exdbg); 200 + OFFSET(PACA_MC_STACK, paca_struct, mc_kstack); 201 + OFFSET(PACA_CRIT_STACK, paca_struct, crit_kstack); 202 + OFFSET(PACA_DBG_STACK, paca_struct, dbg_kstack); 203 + OFFSET(PACA_TCD_PTR, paca_struct, tcd_ptr); 206 204 207 - DEFINE(TCD_ESEL_NEXT, 208 - offsetof(struct tlb_core_data, esel_next)); 209 - DEFINE(TCD_ESEL_MAX, 210 - offsetof(struct tlb_core_data, esel_max)); 211 - DEFINE(TCD_ESEL_FIRST, 212 - offsetof(struct tlb_core_data, esel_first)); 205 + OFFSET(TCD_ESEL_NEXT, tlb_core_data, esel_next); 206 + OFFSET(TCD_ESEL_MAX, tlb_core_data, esel_max); 207 + OFFSET(TCD_ESEL_FIRST, tlb_core_data, esel_first); 213 208 #endif /* CONFIG_PPC_BOOK3E */ 214 209 215 210 #ifdef CONFIG_PPC_STD_MMU_64 216 - DEFINE(PACASLBCACHE, offsetof(struct paca_struct, slb_cache)); 217 - DEFINE(PACASLBCACHEPTR, offsetof(struct paca_struct, slb_cache_ptr)); 218 - DEFINE(PACAVMALLOCSLLP, offsetof(struct paca_struct, vmalloc_sllp)); 211 + OFFSET(PACASLBCACHE, paca_struct, slb_cache); 212 + OFFSET(PACASLBCACHEPTR, paca_struct, slb_cache_ptr); 213 + OFFSET(PACAVMALLOCSLLP, paca_struct, vmalloc_sllp); 219 214 #ifdef CONFIG_PPC_MM_SLICES 220 - DEFINE(MMUPSIZESLLP, offsetof(struct mmu_psize_def, sllp)); 215 + OFFSET(MMUPSIZESLLP, mmu_psize_def, sllp); 221 216 #else 222 - DEFINE(PACACONTEXTSLLP, offsetof(struct paca_struct, mm_ctx_sllp)); 217 + OFFSET(PACACONTEXTSLLP, paca_struct, mm_ctx_sllp); 223 218 #endif /* CONFIG_PPC_MM_SLICES */ 224 - DEFINE(PACA_EXGEN, offsetof(struct paca_struct, exgen)); 225 - DEFINE(PACA_EXMC, offsetof(struct paca_struct, exmc)); 226 - DEFINE(PACA_EXSLB, offsetof(struct paca_struct, exslb)); 227 - DEFINE(PACALPPACAPTR, offsetof(struct paca_struct, lppaca_ptr)); 228 - DEFINE(PACA_SLBSHADOWPTR, offsetof(struct paca_struct, slb_shadow_ptr)); 229 - DEFINE(SLBSHADOW_STACKVSID, 230 - offsetof(struct slb_shadow, save_area[SLB_NUM_BOLTED - 1].vsid)); 231 - DEFINE(SLBSHADOW_STACKESID, 232 - offsetof(struct slb_shadow, save_area[SLB_NUM_BOLTED - 1].esid)); 233 - DEFINE(SLBSHADOW_SAVEAREA, offsetof(struct slb_shadow, save_area)); 234 - DEFINE(LPPACA_PMCINUSE, offsetof(struct lppaca, pmcregs_in_use)); 235 - DEFINE(LPPACA_DTLIDX, offsetof(struct lppaca, dtl_idx)); 236 - DEFINE(LPPACA_YIELDCOUNT, offsetof(struct lppaca, yield_count)); 237 - DEFINE(PACA_DTL_RIDX, offsetof(struct paca_struct, dtl_ridx)); 219 + OFFSET(PACA_EXGEN, paca_struct, exgen); 220 + OFFSET(PACA_EXMC, paca_struct, exmc); 221 + OFFSET(PACA_EXSLB, paca_struct, exslb); 222 + OFFSET(PACALPPACAPTR, paca_struct, lppaca_ptr); 223 + OFFSET(PACA_SLBSHADOWPTR, paca_struct, slb_shadow_ptr); 224 + OFFSET(SLBSHADOW_STACKVSID, slb_shadow, save_area[SLB_NUM_BOLTED - 1].vsid); 225 + OFFSET(SLBSHADOW_STACKESID, slb_shadow, save_area[SLB_NUM_BOLTED - 1].esid); 226 + OFFSET(SLBSHADOW_SAVEAREA, slb_shadow, save_area); 227 + OFFSET(LPPACA_PMCINUSE, lppaca, pmcregs_in_use); 228 + OFFSET(LPPACA_DTLIDX, lppaca, dtl_idx); 229 + OFFSET(LPPACA_YIELDCOUNT, lppaca, yield_count); 230 + OFFSET(PACA_DTL_RIDX, paca_struct, dtl_ridx); 238 231 #endif /* CONFIG_PPC_STD_MMU_64 */ 239 - DEFINE(PACAEMERGSP, offsetof(struct paca_struct, emergency_sp)); 232 + OFFSET(PACAEMERGSP, paca_struct, emergency_sp); 240 233 #ifdef CONFIG_PPC_BOOK3S_64 241 - DEFINE(PACAMCEMERGSP, offsetof(struct paca_struct, mc_emergency_sp)); 242 - DEFINE(PACA_IN_MCE, offsetof(struct paca_struct, in_mce)); 234 + OFFSET(PACAMCEMERGSP, paca_struct, mc_emergency_sp); 235 + OFFSET(PACA_IN_MCE, paca_struct, in_mce); 243 236 #endif 244 - DEFINE(PACAHWCPUID, offsetof(struct paca_struct, hw_cpu_id)); 245 - DEFINE(PACAKEXECSTATE, offsetof(struct paca_struct, kexec_state)); 246 - DEFINE(PACA_DSCR_DEFAULT, offsetof(struct paca_struct, dscr_default)); 247 - DEFINE(ACCOUNT_STARTTIME, 248 - offsetof(struct paca_struct, accounting.starttime)); 249 - DEFINE(ACCOUNT_STARTTIME_USER, 250 - offsetof(struct paca_struct, accounting.starttime_user)); 251 - DEFINE(ACCOUNT_USER_TIME, 252 - offsetof(struct paca_struct, accounting.utime)); 253 - DEFINE(ACCOUNT_SYSTEM_TIME, 254 - offsetof(struct paca_struct, accounting.stime)); 255 - DEFINE(PACA_TRAP_SAVE, offsetof(struct paca_struct, trap_save)); 256 - DEFINE(PACA_NAPSTATELOST, offsetof(struct paca_struct, nap_state_lost)); 257 - DEFINE(PACA_SPRG_VDSO, offsetof(struct paca_struct, sprg_vdso)); 237 + OFFSET(PACAHWCPUID, paca_struct, hw_cpu_id); 238 + OFFSET(PACAKEXECSTATE, paca_struct, kexec_state); 239 + OFFSET(PACA_DSCR_DEFAULT, paca_struct, dscr_default); 240 + OFFSET(ACCOUNT_STARTTIME, paca_struct, accounting.starttime); 241 + OFFSET(ACCOUNT_STARTTIME_USER, paca_struct, accounting.starttime_user); 242 + OFFSET(ACCOUNT_USER_TIME, paca_struct, accounting.utime); 243 + OFFSET(ACCOUNT_SYSTEM_TIME, paca_struct, accounting.stime); 244 + OFFSET(PACA_TRAP_SAVE, paca_struct, trap_save); 245 + OFFSET(PACA_NAPSTATELOST, paca_struct, nap_state_lost); 246 + OFFSET(PACA_SPRG_VDSO, paca_struct, sprg_vdso); 258 247 #else /* CONFIG_PPC64 */ 259 248 #ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE 260 - DEFINE(ACCOUNT_STARTTIME, 261 - offsetof(struct thread_info, accounting.starttime)); 262 - DEFINE(ACCOUNT_STARTTIME_USER, 263 - offsetof(struct thread_info, accounting.starttime_user)); 264 - DEFINE(ACCOUNT_USER_TIME, 265 - offsetof(struct thread_info, accounting.utime)); 266 - DEFINE(ACCOUNT_SYSTEM_TIME, 267 - offsetof(struct thread_info, accounting.stime)); 249 + OFFSET(ACCOUNT_STARTTIME, thread_info, accounting.starttime); 250 + OFFSET(ACCOUNT_STARTTIME_USER, thread_info, accounting.starttime_user); 251 + OFFSET(ACCOUNT_USER_TIME, thread_info, accounting.utime); 252 + OFFSET(ACCOUNT_SYSTEM_TIME, thread_info, accounting.stime); 268 253 #endif 269 254 #endif /* CONFIG_PPC64 */ 270 255 271 256 /* RTAS */ 272 - DEFINE(RTASBASE, offsetof(struct rtas_t, base)); 273 - DEFINE(RTASENTRY, offsetof(struct rtas_t, entry)); 257 + OFFSET(RTASBASE, rtas_t, base); 258 + OFFSET(RTASENTRY, rtas_t, entry); 274 259 275 260 /* Interrupt register frame */ 276 261 DEFINE(INT_FRAME_SIZE, STACK_INT_FRAME_SIZE); ··· 265 280 DEFINE(PROM_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs) + 16); 266 281 DEFINE(RTAS_FRAME_SIZE, STACK_FRAME_OVERHEAD + sizeof(struct pt_regs) + 16); 267 282 #endif /* CONFIG_PPC64 */ 268 - DEFINE(GPR0, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[0])); 269 - DEFINE(GPR1, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[1])); 270 - DEFINE(GPR2, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[2])); 271 - DEFINE(GPR3, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[3])); 272 - DEFINE(GPR4, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[4])); 273 - DEFINE(GPR5, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[5])); 274 - DEFINE(GPR6, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[6])); 275 - DEFINE(GPR7, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[7])); 276 - DEFINE(GPR8, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[8])); 277 - DEFINE(GPR9, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[9])); 278 - DEFINE(GPR10, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[10])); 279 - DEFINE(GPR11, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[11])); 280 - DEFINE(GPR12, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[12])); 281 - DEFINE(GPR13, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[13])); 283 + STACK_PT_REGS_OFFSET(GPR0, gpr[0]); 284 + STACK_PT_REGS_OFFSET(GPR1, gpr[1]); 285 + STACK_PT_REGS_OFFSET(GPR2, gpr[2]); 286 + STACK_PT_REGS_OFFSET(GPR3, gpr[3]); 287 + STACK_PT_REGS_OFFSET(GPR4, gpr[4]); 288 + STACK_PT_REGS_OFFSET(GPR5, gpr[5]); 289 + STACK_PT_REGS_OFFSET(GPR6, gpr[6]); 290 + STACK_PT_REGS_OFFSET(GPR7, gpr[7]); 291 + STACK_PT_REGS_OFFSET(GPR8, gpr[8]); 292 + STACK_PT_REGS_OFFSET(GPR9, gpr[9]); 293 + STACK_PT_REGS_OFFSET(GPR10, gpr[10]); 294 + STACK_PT_REGS_OFFSET(GPR11, gpr[11]); 295 + STACK_PT_REGS_OFFSET(GPR12, gpr[12]); 296 + STACK_PT_REGS_OFFSET(GPR13, gpr[13]); 282 297 #ifndef CONFIG_PPC64 283 - DEFINE(GPR14, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[14])); 298 + STACK_PT_REGS_OFFSET(GPR14, gpr[14]); 284 299 #endif /* CONFIG_PPC64 */ 285 300 /* 286 301 * Note: these symbols include _ because they overlap with special 287 302 * register names 288 303 */ 289 - DEFINE(_NIP, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, nip)); 290 - DEFINE(_MSR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, msr)); 291 - DEFINE(_CTR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, ctr)); 292 - DEFINE(_LINK, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, link)); 293 - DEFINE(_CCR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, ccr)); 294 - DEFINE(_XER, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, xer)); 295 - DEFINE(_DAR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dar)); 296 - DEFINE(_DSISR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dsisr)); 297 - DEFINE(ORIG_GPR3, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, orig_gpr3)); 298 - DEFINE(RESULT, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, result)); 299 - DEFINE(_TRAP, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, trap)); 304 + STACK_PT_REGS_OFFSET(_NIP, nip); 305 + STACK_PT_REGS_OFFSET(_MSR, msr); 306 + STACK_PT_REGS_OFFSET(_CTR, ctr); 307 + STACK_PT_REGS_OFFSET(_LINK, link); 308 + STACK_PT_REGS_OFFSET(_CCR, ccr); 309 + STACK_PT_REGS_OFFSET(_XER, xer); 310 + STACK_PT_REGS_OFFSET(_DAR, dar); 311 + STACK_PT_REGS_OFFSET(_DSISR, dsisr); 312 + STACK_PT_REGS_OFFSET(ORIG_GPR3, orig_gpr3); 313 + STACK_PT_REGS_OFFSET(RESULT, result); 314 + STACK_PT_REGS_OFFSET(_TRAP, trap); 300 315 #ifndef CONFIG_PPC64 301 316 /* 302 317 * The PowerPC 400-class & Book-E processors have neither the DAR ··· 304 319 * DEAR and ESR SPRs for such processors. For critical interrupts 305 320 * we use them to hold SRR0 and SRR1. 306 321 */ 307 - DEFINE(_DEAR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dar)); 308 - DEFINE(_ESR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dsisr)); 322 + STACK_PT_REGS_OFFSET(_DEAR, dar); 323 + STACK_PT_REGS_OFFSET(_ESR, dsisr); 309 324 #else /* CONFIG_PPC64 */ 310 - DEFINE(SOFTE, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, softe)); 325 + STACK_PT_REGS_OFFSET(SOFTE, softe); 311 326 312 327 /* These _only_ to be used with {PROM,RTAS}_FRAME_SIZE!!! */ 313 328 DEFINE(_SRR0, STACK_FRAME_OVERHEAD+sizeof(struct pt_regs)); ··· 336 351 #endif 337 352 338 353 #ifndef CONFIG_PPC64 339 - DEFINE(MM_PGD, offsetof(struct mm_struct, pgd)); 354 + OFFSET(MM_PGD, mm_struct, pgd); 340 355 #endif /* ! CONFIG_PPC64 */ 341 356 342 357 /* About the CPU features table */ 343 - DEFINE(CPU_SPEC_FEATURES, offsetof(struct cpu_spec, cpu_features)); 344 - DEFINE(CPU_SPEC_SETUP, offsetof(struct cpu_spec, cpu_setup)); 345 - DEFINE(CPU_SPEC_RESTORE, offsetof(struct cpu_spec, cpu_restore)); 358 + OFFSET(CPU_SPEC_FEATURES, cpu_spec, cpu_features); 359 + OFFSET(CPU_SPEC_SETUP, cpu_spec, cpu_setup); 360 + OFFSET(CPU_SPEC_RESTORE, cpu_spec, cpu_restore); 346 361 347 - DEFINE(pbe_address, offsetof(struct pbe, address)); 348 - DEFINE(pbe_orig_address, offsetof(struct pbe, orig_address)); 349 - DEFINE(pbe_next, offsetof(struct pbe, next)); 362 + OFFSET(pbe_address, pbe, address); 363 + OFFSET(pbe_orig_address, pbe, orig_address); 364 + OFFSET(pbe_next, pbe, next); 350 365 351 366 #ifndef CONFIG_PPC64 352 367 DEFINE(TASK_SIZE, TASK_SIZE); ··· 354 369 #endif /* ! CONFIG_PPC64 */ 355 370 356 371 /* datapage offsets for use by vdso */ 357 - DEFINE(CFG_TB_ORIG_STAMP, offsetof(struct vdso_data, tb_orig_stamp)); 358 - DEFINE(CFG_TB_TICKS_PER_SEC, offsetof(struct vdso_data, tb_ticks_per_sec)); 359 - DEFINE(CFG_TB_TO_XS, offsetof(struct vdso_data, tb_to_xs)); 360 - DEFINE(CFG_TB_UPDATE_COUNT, offsetof(struct vdso_data, tb_update_count)); 361 - DEFINE(CFG_TZ_MINUTEWEST, offsetof(struct vdso_data, tz_minuteswest)); 362 - DEFINE(CFG_TZ_DSTTIME, offsetof(struct vdso_data, tz_dsttime)); 363 - DEFINE(CFG_SYSCALL_MAP32, offsetof(struct vdso_data, syscall_map_32)); 364 - DEFINE(WTOM_CLOCK_SEC, offsetof(struct vdso_data, wtom_clock_sec)); 365 - DEFINE(WTOM_CLOCK_NSEC, offsetof(struct vdso_data, wtom_clock_nsec)); 366 - DEFINE(STAMP_XTIME, offsetof(struct vdso_data, stamp_xtime)); 367 - DEFINE(STAMP_SEC_FRAC, offsetof(struct vdso_data, stamp_sec_fraction)); 368 - DEFINE(CFG_ICACHE_BLOCKSZ, offsetof(struct vdso_data, icache_block_size)); 369 - DEFINE(CFG_DCACHE_BLOCKSZ, offsetof(struct vdso_data, dcache_block_size)); 370 - DEFINE(CFG_ICACHE_LOGBLOCKSZ, offsetof(struct vdso_data, icache_log_block_size)); 371 - DEFINE(CFG_DCACHE_LOGBLOCKSZ, offsetof(struct vdso_data, dcache_log_block_size)); 372 + OFFSET(CFG_TB_ORIG_STAMP, vdso_data, tb_orig_stamp); 373 + OFFSET(CFG_TB_TICKS_PER_SEC, vdso_data, tb_ticks_per_sec); 374 + OFFSET(CFG_TB_TO_XS, vdso_data, tb_to_xs); 375 + OFFSET(CFG_TB_UPDATE_COUNT, vdso_data, tb_update_count); 376 + OFFSET(CFG_TZ_MINUTEWEST, vdso_data, tz_minuteswest); 377 + OFFSET(CFG_TZ_DSTTIME, vdso_data, tz_dsttime); 378 + OFFSET(CFG_SYSCALL_MAP32, vdso_data, syscall_map_32); 379 + OFFSET(WTOM_CLOCK_SEC, vdso_data, wtom_clock_sec); 380 + OFFSET(WTOM_CLOCK_NSEC, vdso_data, wtom_clock_nsec); 381 + OFFSET(STAMP_XTIME, vdso_data, stamp_xtime); 382 + OFFSET(STAMP_SEC_FRAC, vdso_data, stamp_sec_fraction); 383 + OFFSET(CFG_ICACHE_BLOCKSZ, vdso_data, icache_block_size); 384 + OFFSET(CFG_DCACHE_BLOCKSZ, vdso_data, dcache_block_size); 385 + OFFSET(CFG_ICACHE_LOGBLOCKSZ, vdso_data, icache_log_block_size); 386 + OFFSET(CFG_DCACHE_LOGBLOCKSZ, vdso_data, dcache_log_block_size); 372 387 #ifdef CONFIG_PPC64 373 - DEFINE(CFG_SYSCALL_MAP64, offsetof(struct vdso_data, syscall_map_64)); 374 - DEFINE(TVAL64_TV_SEC, offsetof(struct timeval, tv_sec)); 375 - DEFINE(TVAL64_TV_USEC, offsetof(struct timeval, tv_usec)); 376 - DEFINE(TVAL32_TV_SEC, offsetof(struct compat_timeval, tv_sec)); 377 - DEFINE(TVAL32_TV_USEC, offsetof(struct compat_timeval, tv_usec)); 378 - DEFINE(TSPC64_TV_SEC, offsetof(struct timespec, tv_sec)); 379 - DEFINE(TSPC64_TV_NSEC, offsetof(struct timespec, tv_nsec)); 380 - DEFINE(TSPC32_TV_SEC, offsetof(struct compat_timespec, tv_sec)); 381 - DEFINE(TSPC32_TV_NSEC, offsetof(struct compat_timespec, tv_nsec)); 388 + OFFSET(CFG_SYSCALL_MAP64, vdso_data, syscall_map_64); 389 + OFFSET(TVAL64_TV_SEC, timeval, tv_sec); 390 + OFFSET(TVAL64_TV_USEC, timeval, tv_usec); 391 + OFFSET(TVAL32_TV_SEC, compat_timeval, tv_sec); 392 + OFFSET(TVAL32_TV_USEC, compat_timeval, tv_usec); 393 + OFFSET(TSPC64_TV_SEC, timespec, tv_sec); 394 + OFFSET(TSPC64_TV_NSEC, timespec, tv_nsec); 395 + OFFSET(TSPC32_TV_SEC, compat_timespec, tv_sec); 396 + OFFSET(TSPC32_TV_NSEC, compat_timespec, tv_nsec); 382 397 #else 383 - DEFINE(TVAL32_TV_SEC, offsetof(struct timeval, tv_sec)); 384 - DEFINE(TVAL32_TV_USEC, offsetof(struct timeval, tv_usec)); 385 - DEFINE(TSPC32_TV_SEC, offsetof(struct timespec, tv_sec)); 386 - DEFINE(TSPC32_TV_NSEC, offsetof(struct timespec, tv_nsec)); 398 + OFFSET(TVAL32_TV_SEC, timeval, tv_sec); 399 + OFFSET(TVAL32_TV_USEC, timeval, tv_usec); 400 + OFFSET(TSPC32_TV_SEC, timespec, tv_sec); 401 + OFFSET(TSPC32_TV_NSEC, timespec, tv_nsec); 387 402 #endif 388 403 /* timeval/timezone offsets for use by vdso */ 389 - DEFINE(TZONE_TZ_MINWEST, offsetof(struct timezone, tz_minuteswest)); 390 - DEFINE(TZONE_TZ_DSTTIME, offsetof(struct timezone, tz_dsttime)); 404 + OFFSET(TZONE_TZ_MINWEST, timezone, tz_minuteswest); 405 + OFFSET(TZONE_TZ_DSTTIME, timezone, tz_dsttime); 391 406 392 407 /* Other bits used by the vdso */ 393 408 DEFINE(CLOCK_REALTIME, CLOCK_REALTIME); ··· 407 422 DEFINE(PTE_SIZE, sizeof(pte_t)); 408 423 409 424 #ifdef CONFIG_KVM 410 - DEFINE(VCPU_HOST_STACK, offsetof(struct kvm_vcpu, arch.host_stack)); 411 - DEFINE(VCPU_HOST_PID, offsetof(struct kvm_vcpu, arch.host_pid)); 412 - DEFINE(VCPU_GUEST_PID, offsetof(struct kvm_vcpu, arch.pid)); 413 - DEFINE(VCPU_GPRS, offsetof(struct kvm_vcpu, arch.gpr)); 414 - DEFINE(VCPU_VRSAVE, offsetof(struct kvm_vcpu, arch.vrsave)); 415 - DEFINE(VCPU_FPRS, offsetof(struct kvm_vcpu, arch.fp.fpr)); 425 + OFFSET(VCPU_HOST_STACK, kvm_vcpu, arch.host_stack); 426 + OFFSET(VCPU_HOST_PID, kvm_vcpu, arch.host_pid); 427 + OFFSET(VCPU_GUEST_PID, kvm_vcpu, arch.pid); 428 + OFFSET(VCPU_GPRS, kvm_vcpu, arch.gpr); 429 + OFFSET(VCPU_VRSAVE, kvm_vcpu, arch.vrsave); 430 + OFFSET(VCPU_FPRS, kvm_vcpu, arch.fp.fpr); 416 431 #ifdef CONFIG_ALTIVEC 417 - DEFINE(VCPU_VRS, offsetof(struct kvm_vcpu, arch.vr.vr)); 432 + OFFSET(VCPU_VRS, kvm_vcpu, arch.vr.vr); 418 433 #endif 419 - DEFINE(VCPU_XER, offsetof(struct kvm_vcpu, arch.xer)); 420 - DEFINE(VCPU_CTR, offsetof(struct kvm_vcpu, arch.ctr)); 421 - DEFINE(VCPU_LR, offsetof(struct kvm_vcpu, arch.lr)); 434 + OFFSET(VCPU_XER, kvm_vcpu, arch.xer); 435 + OFFSET(VCPU_CTR, kvm_vcpu, arch.ctr); 436 + OFFSET(VCPU_LR, kvm_vcpu, arch.lr); 422 437 #ifdef CONFIG_PPC_BOOK3S 423 - DEFINE(VCPU_TAR, offsetof(struct kvm_vcpu, arch.tar)); 438 + OFFSET(VCPU_TAR, kvm_vcpu, arch.tar); 424 439 #endif 425 - DEFINE(VCPU_CR, offsetof(struct kvm_vcpu, arch.cr)); 426 - DEFINE(VCPU_PC, offsetof(struct kvm_vcpu, arch.pc)); 440 + OFFSET(VCPU_CR, kvm_vcpu, arch.cr); 441 + OFFSET(VCPU_PC, kvm_vcpu, arch.pc); 427 442 #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE 428 - DEFINE(VCPU_MSR, offsetof(struct kvm_vcpu, arch.shregs.msr)); 429 - DEFINE(VCPU_SRR0, offsetof(struct kvm_vcpu, arch.shregs.srr0)); 430 - DEFINE(VCPU_SRR1, offsetof(struct kvm_vcpu, arch.shregs.srr1)); 431 - DEFINE(VCPU_SPRG0, offsetof(struct kvm_vcpu, arch.shregs.sprg0)); 432 - DEFINE(VCPU_SPRG1, offsetof(struct kvm_vcpu, arch.shregs.sprg1)); 433 - DEFINE(VCPU_SPRG2, offsetof(struct kvm_vcpu, arch.shregs.sprg2)); 434 - DEFINE(VCPU_SPRG3, offsetof(struct kvm_vcpu, arch.shregs.sprg3)); 443 + OFFSET(VCPU_MSR, kvm_vcpu, arch.shregs.msr); 444 + OFFSET(VCPU_SRR0, kvm_vcpu, arch.shregs.srr0); 445 + OFFSET(VCPU_SRR1, kvm_vcpu, arch.shregs.srr1); 446 + OFFSET(VCPU_SPRG0, kvm_vcpu, arch.shregs.sprg0); 447 + OFFSET(VCPU_SPRG1, kvm_vcpu, arch.shregs.sprg1); 448 + OFFSET(VCPU_SPRG2, kvm_vcpu, arch.shregs.sprg2); 449 + OFFSET(VCPU_SPRG3, kvm_vcpu, arch.shregs.sprg3); 435 450 #endif 436 451 #ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING 437 - DEFINE(VCPU_TB_RMENTRY, offsetof(struct kvm_vcpu, arch.rm_entry)); 438 - DEFINE(VCPU_TB_RMINTR, offsetof(struct kvm_vcpu, arch.rm_intr)); 439 - DEFINE(VCPU_TB_RMEXIT, offsetof(struct kvm_vcpu, arch.rm_exit)); 440 - DEFINE(VCPU_TB_GUEST, offsetof(struct kvm_vcpu, arch.guest_time)); 441 - DEFINE(VCPU_TB_CEDE, offsetof(struct kvm_vcpu, arch.cede_time)); 442 - DEFINE(VCPU_CUR_ACTIVITY, offsetof(struct kvm_vcpu, arch.cur_activity)); 443 - DEFINE(VCPU_ACTIVITY_START, offsetof(struct kvm_vcpu, arch.cur_tb_start)); 444 - DEFINE(TAS_SEQCOUNT, offsetof(struct kvmhv_tb_accumulator, seqcount)); 445 - DEFINE(TAS_TOTAL, offsetof(struct kvmhv_tb_accumulator, tb_total)); 446 - DEFINE(TAS_MIN, offsetof(struct kvmhv_tb_accumulator, tb_min)); 447 - DEFINE(TAS_MAX, offsetof(struct kvmhv_tb_accumulator, tb_max)); 452 + OFFSET(VCPU_TB_RMENTRY, kvm_vcpu, arch.rm_entry); 453 + OFFSET(VCPU_TB_RMINTR, kvm_vcpu, arch.rm_intr); 454 + OFFSET(VCPU_TB_RMEXIT, kvm_vcpu, arch.rm_exit); 455 + OFFSET(VCPU_TB_GUEST, kvm_vcpu, arch.guest_time); 456 + OFFSET(VCPU_TB_CEDE, kvm_vcpu, arch.cede_time); 457 + OFFSET(VCPU_CUR_ACTIVITY, kvm_vcpu, arch.cur_activity); 458 + OFFSET(VCPU_ACTIVITY_START, kvm_vcpu, arch.cur_tb_start); 459 + OFFSET(TAS_SEQCOUNT, kvmhv_tb_accumulator, seqcount); 460 + OFFSET(TAS_TOTAL, kvmhv_tb_accumulator, tb_total); 461 + OFFSET(TAS_MIN, kvmhv_tb_accumulator, tb_min); 462 + OFFSET(TAS_MAX, kvmhv_tb_accumulator, tb_max); 448 463 #endif 449 - DEFINE(VCPU_SHARED_SPRG3, offsetof(struct kvm_vcpu_arch_shared, sprg3)); 450 - DEFINE(VCPU_SHARED_SPRG4, offsetof(struct kvm_vcpu_arch_shared, sprg4)); 451 - DEFINE(VCPU_SHARED_SPRG5, offsetof(struct kvm_vcpu_arch_shared, sprg5)); 452 - DEFINE(VCPU_SHARED_SPRG6, offsetof(struct kvm_vcpu_arch_shared, sprg6)); 453 - DEFINE(VCPU_SHARED_SPRG7, offsetof(struct kvm_vcpu_arch_shared, sprg7)); 454 - DEFINE(VCPU_SHADOW_PID, offsetof(struct kvm_vcpu, arch.shadow_pid)); 455 - DEFINE(VCPU_SHADOW_PID1, offsetof(struct kvm_vcpu, arch.shadow_pid1)); 456 - DEFINE(VCPU_SHARED, offsetof(struct kvm_vcpu, arch.shared)); 457 - DEFINE(VCPU_SHARED_MSR, offsetof(struct kvm_vcpu_arch_shared, msr)); 458 - DEFINE(VCPU_SHADOW_MSR, offsetof(struct kvm_vcpu, arch.shadow_msr)); 464 + OFFSET(VCPU_SHARED_SPRG3, kvm_vcpu_arch_shared, sprg3); 465 + OFFSET(VCPU_SHARED_SPRG4, kvm_vcpu_arch_shared, sprg4); 466 + OFFSET(VCPU_SHARED_SPRG5, kvm_vcpu_arch_shared, sprg5); 467 + OFFSET(VCPU_SHARED_SPRG6, kvm_vcpu_arch_shared, sprg6); 468 + OFFSET(VCPU_SHARED_SPRG7, kvm_vcpu_arch_shared, sprg7); 469 + OFFSET(VCPU_SHADOW_PID, kvm_vcpu, arch.shadow_pid); 470 + OFFSET(VCPU_SHADOW_PID1, kvm_vcpu, arch.shadow_pid1); 471 + OFFSET(VCPU_SHARED, kvm_vcpu, arch.shared); 472 + OFFSET(VCPU_SHARED_MSR, kvm_vcpu_arch_shared, msr); 473 + OFFSET(VCPU_SHADOW_MSR, kvm_vcpu, arch.shadow_msr); 459 474 #if defined(CONFIG_PPC_BOOK3S_64) && defined(CONFIG_KVM_BOOK3S_PR_POSSIBLE) 460 - DEFINE(VCPU_SHAREDBE, offsetof(struct kvm_vcpu, arch.shared_big_endian)); 475 + OFFSET(VCPU_SHAREDBE, kvm_vcpu, arch.shared_big_endian); 461 476 #endif 462 477 463 - DEFINE(VCPU_SHARED_MAS0, offsetof(struct kvm_vcpu_arch_shared, mas0)); 464 - DEFINE(VCPU_SHARED_MAS1, offsetof(struct kvm_vcpu_arch_shared, mas1)); 465 - DEFINE(VCPU_SHARED_MAS2, offsetof(struct kvm_vcpu_arch_shared, mas2)); 466 - DEFINE(VCPU_SHARED_MAS7_3, offsetof(struct kvm_vcpu_arch_shared, mas7_3)); 467 - DEFINE(VCPU_SHARED_MAS4, offsetof(struct kvm_vcpu_arch_shared, mas4)); 468 - DEFINE(VCPU_SHARED_MAS6, offsetof(struct kvm_vcpu_arch_shared, mas6)); 478 + OFFSET(VCPU_SHARED_MAS0, kvm_vcpu_arch_shared, mas0); 479 + OFFSET(VCPU_SHARED_MAS1, kvm_vcpu_arch_shared, mas1); 480 + OFFSET(VCPU_SHARED_MAS2, kvm_vcpu_arch_shared, mas2); 481 + OFFSET(VCPU_SHARED_MAS7_3, kvm_vcpu_arch_shared, mas7_3); 482 + OFFSET(VCPU_SHARED_MAS4, kvm_vcpu_arch_shared, mas4); 483 + OFFSET(VCPU_SHARED_MAS6, kvm_vcpu_arch_shared, mas6); 469 484 470 - DEFINE(VCPU_KVM, offsetof(struct kvm_vcpu, kvm)); 471 - DEFINE(KVM_LPID, offsetof(struct kvm, arch.lpid)); 485 + OFFSET(VCPU_KVM, kvm_vcpu, kvm); 486 + OFFSET(KVM_LPID, kvm, arch.lpid); 472 487 473 488 /* book3s */ 474 489 #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE 475 - DEFINE(KVM_TLB_SETS, offsetof(struct kvm, arch.tlb_sets)); 476 - DEFINE(KVM_SDR1, offsetof(struct kvm, arch.sdr1)); 477 - DEFINE(KVM_HOST_LPID, offsetof(struct kvm, arch.host_lpid)); 478 - DEFINE(KVM_HOST_LPCR, offsetof(struct kvm, arch.host_lpcr)); 479 - DEFINE(KVM_HOST_SDR1, offsetof(struct kvm, arch.host_sdr1)); 480 - DEFINE(KVM_NEED_FLUSH, offsetof(struct kvm, arch.need_tlb_flush.bits)); 481 - DEFINE(KVM_ENABLED_HCALLS, offsetof(struct kvm, arch.enabled_hcalls)); 482 - DEFINE(KVM_VRMA_SLB_V, offsetof(struct kvm, arch.vrma_slb_v)); 483 - DEFINE(KVM_RADIX, offsetof(struct kvm, arch.radix)); 484 - DEFINE(VCPU_DSISR, offsetof(struct kvm_vcpu, arch.shregs.dsisr)); 485 - DEFINE(VCPU_DAR, offsetof(struct kvm_vcpu, arch.shregs.dar)); 486 - DEFINE(VCPU_VPA, offsetof(struct kvm_vcpu, arch.vpa.pinned_addr)); 487 - DEFINE(VCPU_VPA_DIRTY, offsetof(struct kvm_vcpu, arch.vpa.dirty)); 488 - DEFINE(VCPU_HEIR, offsetof(struct kvm_vcpu, arch.emul_inst)); 489 - DEFINE(VCPU_CPU, offsetof(struct kvm_vcpu, cpu)); 490 - DEFINE(VCPU_THREAD_CPU, offsetof(struct kvm_vcpu, arch.thread_cpu)); 490 + OFFSET(KVM_TLB_SETS, kvm, arch.tlb_sets); 491 + OFFSET(KVM_SDR1, kvm, arch.sdr1); 492 + OFFSET(KVM_HOST_LPID, kvm, arch.host_lpid); 493 + OFFSET(KVM_HOST_LPCR, kvm, arch.host_lpcr); 494 + OFFSET(KVM_HOST_SDR1, kvm, arch.host_sdr1); 495 + OFFSET(KVM_NEED_FLUSH, kvm, arch.need_tlb_flush.bits); 496 + OFFSET(KVM_ENABLED_HCALLS, kvm, arch.enabled_hcalls); 497 + OFFSET(KVM_VRMA_SLB_V, kvm, arch.vrma_slb_v); 498 + OFFSET(KVM_RADIX, kvm, arch.radix); 499 + OFFSET(VCPU_DSISR, kvm_vcpu, arch.shregs.dsisr); 500 + OFFSET(VCPU_DAR, kvm_vcpu, arch.shregs.dar); 501 + OFFSET(VCPU_VPA, kvm_vcpu, arch.vpa.pinned_addr); 502 + OFFSET(VCPU_VPA_DIRTY, kvm_vcpu, arch.vpa.dirty); 503 + OFFSET(VCPU_HEIR, kvm_vcpu, arch.emul_inst); 504 + OFFSET(VCPU_CPU, kvm_vcpu, cpu); 505 + OFFSET(VCPU_THREAD_CPU, kvm_vcpu, arch.thread_cpu); 491 506 #endif 492 507 #ifdef CONFIG_PPC_BOOK3S 493 - DEFINE(VCPU_PURR, offsetof(struct kvm_vcpu, arch.purr)); 494 - DEFINE(VCPU_SPURR, offsetof(struct kvm_vcpu, arch.spurr)); 495 - DEFINE(VCPU_IC, offsetof(struct kvm_vcpu, arch.ic)); 496 - DEFINE(VCPU_DSCR, offsetof(struct kvm_vcpu, arch.dscr)); 497 - DEFINE(VCPU_AMR, offsetof(struct kvm_vcpu, arch.amr)); 498 - DEFINE(VCPU_UAMOR, offsetof(struct kvm_vcpu, arch.uamor)); 499 - DEFINE(VCPU_IAMR, offsetof(struct kvm_vcpu, arch.iamr)); 500 - DEFINE(VCPU_CTRL, offsetof(struct kvm_vcpu, arch.ctrl)); 501 - DEFINE(VCPU_DABR, offsetof(struct kvm_vcpu, arch.dabr)); 502 - DEFINE(VCPU_DABRX, offsetof(struct kvm_vcpu, arch.dabrx)); 503 - DEFINE(VCPU_DAWR, offsetof(struct kvm_vcpu, arch.dawr)); 504 - DEFINE(VCPU_DAWRX, offsetof(struct kvm_vcpu, arch.dawrx)); 505 - DEFINE(VCPU_CIABR, offsetof(struct kvm_vcpu, arch.ciabr)); 506 - DEFINE(VCPU_HFLAGS, offsetof(struct kvm_vcpu, arch.hflags)); 507 - DEFINE(VCPU_DEC, offsetof(struct kvm_vcpu, arch.dec)); 508 - DEFINE(VCPU_DEC_EXPIRES, offsetof(struct kvm_vcpu, arch.dec_expires)); 509 - DEFINE(VCPU_PENDING_EXC, offsetof(struct kvm_vcpu, arch.pending_exceptions)); 510 - DEFINE(VCPU_CEDED, offsetof(struct kvm_vcpu, arch.ceded)); 511 - DEFINE(VCPU_PRODDED, offsetof(struct kvm_vcpu, arch.prodded)); 512 - DEFINE(VCPU_MMCR, offsetof(struct kvm_vcpu, arch.mmcr)); 513 - DEFINE(VCPU_PMC, offsetof(struct kvm_vcpu, arch.pmc)); 514 - DEFINE(VCPU_SPMC, offsetof(struct kvm_vcpu, arch.spmc)); 515 - DEFINE(VCPU_SIAR, offsetof(struct kvm_vcpu, arch.siar)); 516 - DEFINE(VCPU_SDAR, offsetof(struct kvm_vcpu, arch.sdar)); 517 - DEFINE(VCPU_SIER, offsetof(struct kvm_vcpu, arch.sier)); 518 - DEFINE(VCPU_SLB, offsetof(struct kvm_vcpu, arch.slb)); 519 - DEFINE(VCPU_SLB_MAX, offsetof(struct kvm_vcpu, arch.slb_max)); 520 - DEFINE(VCPU_SLB_NR, offsetof(struct kvm_vcpu, arch.slb_nr)); 521 - DEFINE(VCPU_FAULT_DSISR, offsetof(struct kvm_vcpu, arch.fault_dsisr)); 522 - DEFINE(VCPU_FAULT_DAR, offsetof(struct kvm_vcpu, arch.fault_dar)); 523 - DEFINE(VCPU_FAULT_GPA, offsetof(struct kvm_vcpu, arch.fault_gpa)); 524 - DEFINE(VCPU_INTR_MSR, offsetof(struct kvm_vcpu, arch.intr_msr)); 525 - DEFINE(VCPU_LAST_INST, offsetof(struct kvm_vcpu, arch.last_inst)); 526 - DEFINE(VCPU_TRAP, offsetof(struct kvm_vcpu, arch.trap)); 527 - DEFINE(VCPU_CFAR, offsetof(struct kvm_vcpu, arch.cfar)); 528 - DEFINE(VCPU_PPR, offsetof(struct kvm_vcpu, arch.ppr)); 529 - DEFINE(VCPU_FSCR, offsetof(struct kvm_vcpu, arch.fscr)); 530 - DEFINE(VCPU_PSPB, offsetof(struct kvm_vcpu, arch.pspb)); 531 - DEFINE(VCPU_EBBHR, offsetof(struct kvm_vcpu, arch.ebbhr)); 532 - DEFINE(VCPU_EBBRR, offsetof(struct kvm_vcpu, arch.ebbrr)); 533 - DEFINE(VCPU_BESCR, offsetof(struct kvm_vcpu, arch.bescr)); 534 - DEFINE(VCPU_CSIGR, offsetof(struct kvm_vcpu, arch.csigr)); 535 - DEFINE(VCPU_TACR, offsetof(struct kvm_vcpu, arch.tacr)); 536 - DEFINE(VCPU_TCSCR, offsetof(struct kvm_vcpu, arch.tcscr)); 537 - DEFINE(VCPU_ACOP, offsetof(struct kvm_vcpu, arch.acop)); 538 - DEFINE(VCPU_WORT, offsetof(struct kvm_vcpu, arch.wort)); 539 - DEFINE(VCPU_TID, offsetof(struct kvm_vcpu, arch.tid)); 540 - DEFINE(VCPU_PSSCR, offsetof(struct kvm_vcpu, arch.psscr)); 541 - DEFINE(VCORE_ENTRY_EXIT, offsetof(struct kvmppc_vcore, entry_exit_map)); 542 - DEFINE(VCORE_IN_GUEST, offsetof(struct kvmppc_vcore, in_guest)); 543 - DEFINE(VCORE_NAPPING_THREADS, offsetof(struct kvmppc_vcore, napping_threads)); 544 - DEFINE(VCORE_KVM, offsetof(struct kvmppc_vcore, kvm)); 545 - DEFINE(VCORE_TB_OFFSET, offsetof(struct kvmppc_vcore, tb_offset)); 546 - DEFINE(VCORE_LPCR, offsetof(struct kvmppc_vcore, lpcr)); 547 - DEFINE(VCORE_PCR, offsetof(struct kvmppc_vcore, pcr)); 548 - DEFINE(VCORE_DPDES, offsetof(struct kvmppc_vcore, dpdes)); 549 - DEFINE(VCORE_VTB, offsetof(struct kvmppc_vcore, vtb)); 550 - DEFINE(VCPU_SLB_E, offsetof(struct kvmppc_slb, orige)); 551 - DEFINE(VCPU_SLB_V, offsetof(struct kvmppc_slb, origv)); 508 + OFFSET(VCPU_PURR, kvm_vcpu, arch.purr); 509 + OFFSET(VCPU_SPURR, kvm_vcpu, arch.spurr); 510 + OFFSET(VCPU_IC, kvm_vcpu, arch.ic); 511 + OFFSET(VCPU_DSCR, kvm_vcpu, arch.dscr); 512 + OFFSET(VCPU_AMR, kvm_vcpu, arch.amr); 513 + OFFSET(VCPU_UAMOR, kvm_vcpu, arch.uamor); 514 + OFFSET(VCPU_IAMR, kvm_vcpu, arch.iamr); 515 + OFFSET(VCPU_CTRL, kvm_vcpu, arch.ctrl); 516 + OFFSET(VCPU_DABR, kvm_vcpu, arch.dabr); 517 + OFFSET(VCPU_DABRX, kvm_vcpu, arch.dabrx); 518 + OFFSET(VCPU_DAWR, kvm_vcpu, arch.dawr); 519 + OFFSET(VCPU_DAWRX, kvm_vcpu, arch.dawrx); 520 + OFFSET(VCPU_CIABR, kvm_vcpu, arch.ciabr); 521 + OFFSET(VCPU_HFLAGS, kvm_vcpu, arch.hflags); 522 + OFFSET(VCPU_DEC, kvm_vcpu, arch.dec); 523 + OFFSET(VCPU_DEC_EXPIRES, kvm_vcpu, arch.dec_expires); 524 + OFFSET(VCPU_PENDING_EXC, kvm_vcpu, arch.pending_exceptions); 525 + OFFSET(VCPU_CEDED, kvm_vcpu, arch.ceded); 526 + OFFSET(VCPU_PRODDED, kvm_vcpu, arch.prodded); 527 + OFFSET(VCPU_MMCR, kvm_vcpu, arch.mmcr); 528 + OFFSET(VCPU_PMC, kvm_vcpu, arch.pmc); 529 + OFFSET(VCPU_SPMC, kvm_vcpu, arch.spmc); 530 + OFFSET(VCPU_SIAR, kvm_vcpu, arch.siar); 531 + OFFSET(VCPU_SDAR, kvm_vcpu, arch.sdar); 532 + OFFSET(VCPU_SIER, kvm_vcpu, arch.sier); 533 + OFFSET(VCPU_SLB, kvm_vcpu, arch.slb); 534 + OFFSET(VCPU_SLB_MAX, kvm_vcpu, arch.slb_max); 535 + OFFSET(VCPU_SLB_NR, kvm_vcpu, arch.slb_nr); 536 + OFFSET(VCPU_FAULT_DSISR, kvm_vcpu, arch.fault_dsisr); 537 + OFFSET(VCPU_FAULT_DAR, kvm_vcpu, arch.fault_dar); 538 + OFFSET(VCPU_FAULT_GPA, kvm_vcpu, arch.fault_gpa); 539 + OFFSET(VCPU_INTR_MSR, kvm_vcpu, arch.intr_msr); 540 + OFFSET(VCPU_LAST_INST, kvm_vcpu, arch.last_inst); 541 + OFFSET(VCPU_TRAP, kvm_vcpu, arch.trap); 542 + OFFSET(VCPU_CFAR, kvm_vcpu, arch.cfar); 543 + OFFSET(VCPU_PPR, kvm_vcpu, arch.ppr); 544 + OFFSET(VCPU_FSCR, kvm_vcpu, arch.fscr); 545 + OFFSET(VCPU_PSPB, kvm_vcpu, arch.pspb); 546 + OFFSET(VCPU_EBBHR, kvm_vcpu, arch.ebbhr); 547 + OFFSET(VCPU_EBBRR, kvm_vcpu, arch.ebbrr); 548 + OFFSET(VCPU_BESCR, kvm_vcpu, arch.bescr); 549 + OFFSET(VCPU_CSIGR, kvm_vcpu, arch.csigr); 550 + OFFSET(VCPU_TACR, kvm_vcpu, arch.tacr); 551 + OFFSET(VCPU_TCSCR, kvm_vcpu, arch.tcscr); 552 + OFFSET(VCPU_ACOP, kvm_vcpu, arch.acop); 553 + OFFSET(VCPU_WORT, kvm_vcpu, arch.wort); 554 + OFFSET(VCPU_TID, kvm_vcpu, arch.tid); 555 + OFFSET(VCPU_PSSCR, kvm_vcpu, arch.psscr); 556 + OFFSET(VCORE_ENTRY_EXIT, kvmppc_vcore, entry_exit_map); 557 + OFFSET(VCORE_IN_GUEST, kvmppc_vcore, in_guest); 558 + OFFSET(VCORE_NAPPING_THREADS, kvmppc_vcore, napping_threads); 559 + OFFSET(VCORE_KVM, kvmppc_vcore, kvm); 560 + OFFSET(VCORE_TB_OFFSET, kvmppc_vcore, tb_offset); 561 + OFFSET(VCORE_LPCR, kvmppc_vcore, lpcr); 562 + OFFSET(VCORE_PCR, kvmppc_vcore, pcr); 563 + OFFSET(VCORE_DPDES, kvmppc_vcore, dpdes); 564 + OFFSET(VCORE_VTB, kvmppc_vcore, vtb); 565 + OFFSET(VCPU_SLB_E, kvmppc_slb, orige); 566 + OFFSET(VCPU_SLB_V, kvmppc_slb, origv); 552 567 DEFINE(VCPU_SLB_SIZE, sizeof(struct kvmppc_slb)); 553 568 #ifdef CONFIG_PPC_TRANSACTIONAL_MEM 554 - DEFINE(VCPU_TFHAR, offsetof(struct kvm_vcpu, arch.tfhar)); 555 - DEFINE(VCPU_TFIAR, offsetof(struct kvm_vcpu, arch.tfiar)); 556 - DEFINE(VCPU_TEXASR, offsetof(struct kvm_vcpu, arch.texasr)); 557 - DEFINE(VCPU_GPR_TM, offsetof(struct kvm_vcpu, arch.gpr_tm)); 558 - DEFINE(VCPU_FPRS_TM, offsetof(struct kvm_vcpu, arch.fp_tm.fpr)); 559 - DEFINE(VCPU_VRS_TM, offsetof(struct kvm_vcpu, arch.vr_tm.vr)); 560 - DEFINE(VCPU_VRSAVE_TM, offsetof(struct kvm_vcpu, arch.vrsave_tm)); 561 - DEFINE(VCPU_CR_TM, offsetof(struct kvm_vcpu, arch.cr_tm)); 562 - DEFINE(VCPU_XER_TM, offsetof(struct kvm_vcpu, arch.xer_tm)); 563 - DEFINE(VCPU_LR_TM, offsetof(struct kvm_vcpu, arch.lr_tm)); 564 - DEFINE(VCPU_CTR_TM, offsetof(struct kvm_vcpu, arch.ctr_tm)); 565 - DEFINE(VCPU_AMR_TM, offsetof(struct kvm_vcpu, arch.amr_tm)); 566 - DEFINE(VCPU_PPR_TM, offsetof(struct kvm_vcpu, arch.ppr_tm)); 567 - DEFINE(VCPU_DSCR_TM, offsetof(struct kvm_vcpu, arch.dscr_tm)); 568 - DEFINE(VCPU_TAR_TM, offsetof(struct kvm_vcpu, arch.tar_tm)); 569 + OFFSET(VCPU_TFHAR, kvm_vcpu, arch.tfhar); 570 + OFFSET(VCPU_TFIAR, kvm_vcpu, arch.tfiar); 571 + OFFSET(VCPU_TEXASR, kvm_vcpu, arch.texasr); 572 + OFFSET(VCPU_GPR_TM, kvm_vcpu, arch.gpr_tm); 573 + OFFSET(VCPU_FPRS_TM, kvm_vcpu, arch.fp_tm.fpr); 574 + OFFSET(VCPU_VRS_TM, kvm_vcpu, arch.vr_tm.vr); 575 + OFFSET(VCPU_VRSAVE_TM, kvm_vcpu, arch.vrsave_tm); 576 + OFFSET(VCPU_CR_TM, kvm_vcpu, arch.cr_tm); 577 + OFFSET(VCPU_XER_TM, kvm_vcpu, arch.xer_tm); 578 + OFFSET(VCPU_LR_TM, kvm_vcpu, arch.lr_tm); 579 + OFFSET(VCPU_CTR_TM, kvm_vcpu, arch.ctr_tm); 580 + OFFSET(VCPU_AMR_TM, kvm_vcpu, arch.amr_tm); 581 + OFFSET(VCPU_PPR_TM, kvm_vcpu, arch.ppr_tm); 582 + OFFSET(VCPU_DSCR_TM, kvm_vcpu, arch.dscr_tm); 583 + OFFSET(VCPU_TAR_TM, kvm_vcpu, arch.tar_tm); 569 584 #endif 570 585 571 586 #ifdef CONFIG_PPC_BOOK3S_64 572 587 #ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE 573 - DEFINE(PACA_SVCPU, offsetof(struct paca_struct, shadow_vcpu)); 588 + OFFSET(PACA_SVCPU, paca_struct, shadow_vcpu); 574 589 # define SVCPU_FIELD(x, f) DEFINE(x, offsetof(struct paca_struct, shadow_vcpu.f)) 575 590 #else 576 591 # define SVCPU_FIELD(x, f) ··· 653 668 HSTATE_FIELD(HSTATE_DECEXP, dec_expires); 654 669 HSTATE_FIELD(HSTATE_SPLIT_MODE, kvm_split_mode); 655 670 DEFINE(IPI_PRIORITY, IPI_PRIORITY); 656 - DEFINE(KVM_SPLIT_RPR, offsetof(struct kvm_split_mode, rpr)); 657 - DEFINE(KVM_SPLIT_PMMAR, offsetof(struct kvm_split_mode, pmmar)); 658 - DEFINE(KVM_SPLIT_LDBAR, offsetof(struct kvm_split_mode, ldbar)); 659 - DEFINE(KVM_SPLIT_DO_NAP, offsetof(struct kvm_split_mode, do_nap)); 660 - DEFINE(KVM_SPLIT_NAPPED, offsetof(struct kvm_split_mode, napped)); 671 + OFFSET(KVM_SPLIT_RPR, kvm_split_mode, rpr); 672 + OFFSET(KVM_SPLIT_PMMAR, kvm_split_mode, pmmar); 673 + OFFSET(KVM_SPLIT_LDBAR, kvm_split_mode, ldbar); 674 + OFFSET(KVM_SPLIT_DO_NAP, kvm_split_mode, do_nap); 675 + OFFSET(KVM_SPLIT_NAPPED, kvm_split_mode, napped); 661 676 #endif /* CONFIG_KVM_BOOK3S_HV_POSSIBLE */ 662 677 663 678 #ifdef CONFIG_PPC_BOOK3S_64 ··· 667 682 #endif /* CONFIG_PPC_BOOK3S_64 */ 668 683 669 684 #else /* CONFIG_PPC_BOOK3S */ 670 - DEFINE(VCPU_CR, offsetof(struct kvm_vcpu, arch.cr)); 671 - DEFINE(VCPU_XER, offsetof(struct kvm_vcpu, arch.xer)); 672 - DEFINE(VCPU_LR, offsetof(struct kvm_vcpu, arch.lr)); 673 - DEFINE(VCPU_CTR, offsetof(struct kvm_vcpu, arch.ctr)); 674 - DEFINE(VCPU_PC, offsetof(struct kvm_vcpu, arch.pc)); 675 - DEFINE(VCPU_SPRG9, offsetof(struct kvm_vcpu, arch.sprg9)); 676 - DEFINE(VCPU_LAST_INST, offsetof(struct kvm_vcpu, arch.last_inst)); 677 - DEFINE(VCPU_FAULT_DEAR, offsetof(struct kvm_vcpu, arch.fault_dear)); 678 - DEFINE(VCPU_FAULT_ESR, offsetof(struct kvm_vcpu, arch.fault_esr)); 679 - DEFINE(VCPU_CRIT_SAVE, offsetof(struct kvm_vcpu, arch.crit_save)); 685 + OFFSET(VCPU_CR, kvm_vcpu, arch.cr); 686 + OFFSET(VCPU_XER, kvm_vcpu, arch.xer); 687 + OFFSET(VCPU_LR, kvm_vcpu, arch.lr); 688 + OFFSET(VCPU_CTR, kvm_vcpu, arch.ctr); 689 + OFFSET(VCPU_PC, kvm_vcpu, arch.pc); 690 + OFFSET(VCPU_SPRG9, kvm_vcpu, arch.sprg9); 691 + OFFSET(VCPU_LAST_INST, kvm_vcpu, arch.last_inst); 692 + OFFSET(VCPU_FAULT_DEAR, kvm_vcpu, arch.fault_dear); 693 + OFFSET(VCPU_FAULT_ESR, kvm_vcpu, arch.fault_esr); 694 + OFFSET(VCPU_CRIT_SAVE, kvm_vcpu, arch.crit_save); 680 695 #endif /* CONFIG_PPC_BOOK3S */ 681 696 #endif /* CONFIG_KVM */ 682 697 683 698 #ifdef CONFIG_KVM_GUEST 684 - DEFINE(KVM_MAGIC_SCRATCH1, offsetof(struct kvm_vcpu_arch_shared, 685 - scratch1)); 686 - DEFINE(KVM_MAGIC_SCRATCH2, offsetof(struct kvm_vcpu_arch_shared, 687 - scratch2)); 688 - DEFINE(KVM_MAGIC_SCRATCH3, offsetof(struct kvm_vcpu_arch_shared, 689 - scratch3)); 690 - DEFINE(KVM_MAGIC_INT, offsetof(struct kvm_vcpu_arch_shared, 691 - int_pending)); 692 - DEFINE(KVM_MAGIC_MSR, offsetof(struct kvm_vcpu_arch_shared, msr)); 693 - DEFINE(KVM_MAGIC_CRITICAL, offsetof(struct kvm_vcpu_arch_shared, 694 - critical)); 695 - DEFINE(KVM_MAGIC_SR, offsetof(struct kvm_vcpu_arch_shared, sr)); 699 + OFFSET(KVM_MAGIC_SCRATCH1, kvm_vcpu_arch_shared, scratch1); 700 + OFFSET(KVM_MAGIC_SCRATCH2, kvm_vcpu_arch_shared, scratch2); 701 + OFFSET(KVM_MAGIC_SCRATCH3, kvm_vcpu_arch_shared, scratch3); 702 + OFFSET(KVM_MAGIC_INT, kvm_vcpu_arch_shared, int_pending); 703 + OFFSET(KVM_MAGIC_MSR, kvm_vcpu_arch_shared, msr); 704 + OFFSET(KVM_MAGIC_CRITICAL, kvm_vcpu_arch_shared, critical); 705 + OFFSET(KVM_MAGIC_SR, kvm_vcpu_arch_shared, sr); 696 706 #endif 697 707 698 708 #ifdef CONFIG_44x ··· 696 716 #endif 697 717 #ifdef CONFIG_PPC_FSL_BOOK3E 698 718 DEFINE(TLBCAM_SIZE, sizeof(struct tlbcam)); 699 - DEFINE(TLBCAM_MAS0, offsetof(struct tlbcam, MAS0)); 700 - DEFINE(TLBCAM_MAS1, offsetof(struct tlbcam, MAS1)); 701 - DEFINE(TLBCAM_MAS2, offsetof(struct tlbcam, MAS2)); 702 - DEFINE(TLBCAM_MAS3, offsetof(struct tlbcam, MAS3)); 703 - DEFINE(TLBCAM_MAS7, offsetof(struct tlbcam, MAS7)); 719 + OFFSET(TLBCAM_MAS0, tlbcam, MAS0); 720 + OFFSET(TLBCAM_MAS1, tlbcam, MAS1); 721 + OFFSET(TLBCAM_MAS2, tlbcam, MAS2); 722 + OFFSET(TLBCAM_MAS3, tlbcam, MAS3); 723 + OFFSET(TLBCAM_MAS7, tlbcam, MAS7); 704 724 #endif 705 725 706 726 #if defined(CONFIG_KVM) && defined(CONFIG_SPE) 707 - DEFINE(VCPU_EVR, offsetof(struct kvm_vcpu, arch.evr[0])); 708 - DEFINE(VCPU_ACC, offsetof(struct kvm_vcpu, arch.acc)); 709 - DEFINE(VCPU_SPEFSCR, offsetof(struct kvm_vcpu, arch.spefscr)); 710 - DEFINE(VCPU_HOST_SPEFSCR, offsetof(struct kvm_vcpu, arch.host_spefscr)); 727 + OFFSET(VCPU_EVR, kvm_vcpu, arch.evr[0]); 728 + OFFSET(VCPU_ACC, kvm_vcpu, arch.acc); 729 + OFFSET(VCPU_SPEFSCR, kvm_vcpu, arch.spefscr); 730 + OFFSET(VCPU_HOST_SPEFSCR, kvm_vcpu, arch.host_spefscr); 711 731 #endif 712 732 713 733 #ifdef CONFIG_KVM_BOOKE_HV 714 - DEFINE(VCPU_HOST_MAS4, offsetof(struct kvm_vcpu, arch.host_mas4)); 715 - DEFINE(VCPU_HOST_MAS6, offsetof(struct kvm_vcpu, arch.host_mas6)); 734 + OFFSET(VCPU_HOST_MAS4, kvm_vcpu, arch.host_mas4); 735 + OFFSET(VCPU_HOST_MAS6, kvm_vcpu, arch.host_mas6); 716 736 #endif 717 737 718 738 #ifdef CONFIG_KVM_EXIT_TIMING 719 - DEFINE(VCPU_TIMING_EXIT_TBU, offsetof(struct kvm_vcpu, 720 - arch.timing_exit.tv32.tbu)); 721 - DEFINE(VCPU_TIMING_EXIT_TBL, offsetof(struct kvm_vcpu, 722 - arch.timing_exit.tv32.tbl)); 723 - DEFINE(VCPU_TIMING_LAST_ENTER_TBU, offsetof(struct kvm_vcpu, 724 - arch.timing_last_enter.tv32.tbu)); 725 - DEFINE(VCPU_TIMING_LAST_ENTER_TBL, offsetof(struct kvm_vcpu, 726 - arch.timing_last_enter.tv32.tbl)); 739 + OFFSET(VCPU_TIMING_EXIT_TBU, kvm_vcpu, arch.timing_exit.tv32.tbu); 740 + OFFSET(VCPU_TIMING_EXIT_TBL, kvm_vcpu, arch.timing_exit.tv32.tbl); 741 + OFFSET(VCPU_TIMING_LAST_ENTER_TBU, kvm_vcpu, arch.timing_last_enter.tv32.tbu); 742 + OFFSET(VCPU_TIMING_LAST_ENTER_TBL, kvm_vcpu, arch.timing_last_enter.tv32.tbl); 727 743 #endif 728 744 729 745 #ifdef CONFIG_PPC_POWERNV 730 - DEFINE(PACA_CORE_IDLE_STATE_PTR, 731 - offsetof(struct paca_struct, core_idle_state_ptr)); 732 - DEFINE(PACA_THREAD_IDLE_STATE, 733 - offsetof(struct paca_struct, thread_idle_state)); 734 - DEFINE(PACA_THREAD_MASK, 735 - offsetof(struct paca_struct, thread_mask)); 736 - DEFINE(PACA_SUBCORE_SIBLING_MASK, 737 - offsetof(struct paca_struct, subcore_sibling_mask)); 746 + OFFSET(PACA_CORE_IDLE_STATE_PTR, paca_struct, core_idle_state_ptr); 747 + OFFSET(PACA_THREAD_IDLE_STATE, paca_struct, thread_idle_state); 748 + OFFSET(PACA_THREAD_MASK, paca_struct, thread_mask); 749 + OFFSET(PACA_SUBCORE_SIBLING_MASK, paca_struct, subcore_sibling_mask); 738 750 #endif 739 751 740 752 DEFINE(PPC_DBELL_SERVER, PPC_DBELL_SERVER);
+4
arch/powerpc/kernel/cpu_setup_power.S
··· 101 101 mfspr r3,SPRN_LPCR 102 102 LOAD_REG_IMMEDIATE(r4, LPCR_PECEDH | LPCR_PECE_HVEE | LPCR_HVICE) 103 103 or r3, r3, r4 104 + LOAD_REG_IMMEDIATE(r4, LPCR_UPRT | LPCR_HR) 105 + andc r3, r3, r4 104 106 bl __init_LPCR 105 107 bl __init_HFSCR 106 108 bl __init_tlb_power9 ··· 124 122 mfspr r3,SPRN_LPCR 125 123 LOAD_REG_IMMEDIATE(r4, LPCR_PECEDH | LPCR_PECE_HVEE | LPCR_HVICE) 126 124 or r3, r3, r4 125 + LOAD_REG_IMMEDIATE(r4, LPCR_UPRT | LPCR_HR) 126 + andc r3, r3, r4 127 127 bl __init_LPCR 128 128 bl __init_HFSCR 129 129 bl __init_tlb_power9
+17
arch/powerpc/kernel/cputable.c
··· 386 386 .machine_check_early = __machine_check_early_realmode_p8, 387 387 .platform = "power8", 388 388 }, 389 + { /* 3.00-compliant processor, i.e. Power9 "architected" mode */ 390 + .pvr_mask = 0xffffffff, 391 + .pvr_value = 0x0f000005, 392 + .cpu_name = "POWER9 (architected)", 393 + .cpu_features = CPU_FTRS_POWER9, 394 + .cpu_user_features = COMMON_USER_POWER9, 395 + .cpu_user_features2 = COMMON_USER2_POWER9, 396 + .mmu_features = MMU_FTRS_POWER9, 397 + .icache_bsize = 128, 398 + .dcache_bsize = 128, 399 + .oprofile_type = PPC_OPROFILE_INVALID, 400 + .oprofile_cpu_type = "ppc64/ibm-compat-v1", 401 + .cpu_setup = __setup_cpu_power9, 402 + .cpu_restore = __restore_cpu_power9, 403 + .flush_tlb = __flush_tlb_power9, 404 + .platform = "power9", 405 + }, 389 406 { /* Power7 */ 390 407 .pvr_mask = 0xffff0000, 391 408 .pvr_value = 0x003f0000,
+15 -4
arch/powerpc/kernel/entry_32.S
··· 205 205 mflr r9 206 206 lwz r11,0(r9) /* virtual address of handler */ 207 207 lwz r9,4(r9) /* where to go when done */ 208 + #ifdef CONFIG_PPC_8xx_PERF_EVENT 209 + mtspr SPRN_NRI, r0 210 + #endif 208 211 #ifdef CONFIG_TRACE_IRQFLAGS 209 212 lis r12,reenable_mmu@h 210 213 ori r12,r12,reenable_mmu@l ··· 295 292 lis r9,StackOverflow@ha 296 293 addi r9,r9,StackOverflow@l 297 294 LOAD_MSR_KERNEL(r10,MSR_KERNEL) 298 - FIX_SRR1(r10,r12) 295 + #ifdef CONFIG_PPC_8xx_PERF_EVENT 296 + mtspr SPRN_NRI, r0 297 + #endif 299 298 mtspr SPRN_SRR0,r9 300 299 mtspr SPRN_SRR1,r10 301 300 SYNC ··· 422 417 mtlr r4 423 418 mtcr r5 424 419 lwz r7,_NIP(r1) 425 - FIX_SRR1(r8, r0) 426 420 lwz r2,GPR2(r1) 427 421 lwz r1,GPR1(r1) 422 + #ifdef CONFIG_PPC_8xx_PERF_EVENT 423 + mtspr SPRN_NRI, r0 424 + #endif 428 425 mtspr SPRN_SRR0,r7 429 426 mtspr SPRN_SRR1,r8 430 427 SYNC ··· 706 699 lwz r10,_LINK(r11) 707 700 mtlr r10 708 701 REST_GPR(10, r11) 702 + #ifdef CONFIG_PPC_8xx_PERF_EVENT 703 + mtspr SPRN_NRI, r0 704 + #endif 709 705 mtspr SPRN_SRR1,r9 710 706 mtspr SPRN_SRR0,r12 711 707 REST_GPR(9, r11) ··· 957 947 .globl exc_exit_restart 958 948 exc_exit_restart: 959 949 lwz r12,_NIP(r1) 960 - FIX_SRR1(r9,r10) 950 + #ifdef CONFIG_PPC_8xx_PERF_EVENT 951 + mtspr SPRN_NRI, r0 952 + #endif 961 953 mtspr SPRN_SRR0,r12 962 954 mtspr SPRN_SRR1,r9 963 955 REST_4GPRS(9, r1) ··· 1302 1290 1: tophys(r9,r1) 1303 1291 lwz r8,INT_FRAME_SIZE+4(r9) /* get return address */ 1304 1292 lwz r9,8(r9) /* original msr value */ 1305 - FIX_SRR1(r9,r0) 1306 1293 addi r1,r1,INT_FRAME_SIZE 1307 1294 li r0,0 1308 1295 mtspr SPRN_SPRG_RTAS,r0
-3
arch/powerpc/kernel/head_32.S
··· 869 869 870 870 /* enable MMU and jump to start_secondary */ 871 871 li r4,MSR_KERNEL 872 - FIX_SRR1(r4,r5) 873 872 lis r3,start_secondary@h 874 873 ori r3,r3,start_secondary@l 875 874 mtspr SPRN_SRR0,r3 ··· 976 977 ori r4,r4,2f@l 977 978 tophys(r4,r4) 978 979 li r3,MSR_KERNEL & ~(MSR_IR|MSR_DR) 979 - FIX_SRR1(r3,r5) 980 980 mtspr SPRN_SRR0,r4 981 981 mtspr SPRN_SRR1,r3 982 982 SYNC ··· 999 1001 1000 1002 /* Now turn on the MMU for real! */ 1001 1003 li r4,MSR_KERNEL 1002 - FIX_SRR1(r4,r5) 1003 1004 lis r3,start_kernel@h 1004 1005 ori r3,r3,start_kernel@l 1005 1006 mtspr SPRN_SRR0,r3
+71 -1
arch/powerpc/kernel/head_8xx.S
··· 329 329 mtspr SPRN_SPRG_SCRATCH2, r3 330 330 #endif 331 331 EXCEPTION_PROLOG_0 332 + #ifdef CONFIG_PPC_8xx_PERF_EVENT 333 + lis r10, (itlb_miss_counter - PAGE_OFFSET)@ha 334 + lwz r11, (itlb_miss_counter - PAGE_OFFSET)@l(r10) 335 + addi r11, r11, 1 336 + stw r11, (itlb_miss_counter - PAGE_OFFSET)@l(r10) 337 + #endif 332 338 333 339 /* If we are faulting a kernel address, we have to use the 334 340 * kernel page tables. ··· 435 429 DataStoreTLBMiss: 436 430 mtspr SPRN_SPRG_SCRATCH2, r3 437 431 EXCEPTION_PROLOG_0 432 + #ifdef CONFIG_PPC_8xx_PERF_EVENT 433 + lis r10, (dtlb_miss_counter - PAGE_OFFSET)@ha 434 + lwz r11, (dtlb_miss_counter - PAGE_OFFSET)@l(r10) 435 + addi r11, r11, 1 436 + stw r11, (dtlb_miss_counter - PAGE_OFFSET)@l(r10) 437 + #endif 438 438 mfcr r3 439 439 440 440 /* If we are faulting a kernel address, we have to use the ··· 573 561 andis. r10,r5,0x4000 574 562 beq+ 1f 575 563 tlbie r4 564 + itlbie: 576 565 /* 0x400 is InstructionAccess exception, needed by bad_page_fault() */ 577 566 1: EXC_XFER_LITE(0x400, handle_page_fault) 578 567 ··· 598 585 andis. r10,r5,0x4000 599 586 beq+ 1f 600 587 tlbie r4 588 + dtlbie: 601 589 1: li r10,RPN_PATTERN 602 590 mtspr SPRN_DAR,r10 /* Tag DAR, to be used in DTLB Error */ 603 591 /* 0x300 is DataAccess exception, needed by bad_page_fault() */ ··· 616 602 * support of breakpoints and such. Someday I will get around to 617 603 * using them. 618 604 */ 619 - EXCEPTION(0x1c00, Trap_1c, unknown_exception, EXC_XFER_EE) 605 + . = 0x1c00 606 + DataBreakpoint: 607 + EXCEPTION_PROLOG_0 608 + mfcr r10 609 + mfspr r11, SPRN_SRR0 610 + cmplwi cr0, r11, (dtlbie - PAGE_OFFSET)@l 611 + cmplwi cr7, r11, (itlbie - PAGE_OFFSET)@l 612 + beq- cr0, 11f 613 + beq- cr7, 11f 614 + EXCEPTION_PROLOG_1 615 + EXCEPTION_PROLOG_2 616 + addi r3,r1,STACK_FRAME_OVERHEAD 617 + mfspr r4,SPRN_BAR 618 + stw r4,_DAR(r11) 619 + mfspr r5,SPRN_DSISR 620 + EXC_XFER_EE(0x1c00, do_break) 621 + 11: 622 + mtcr r10 623 + EXCEPTION_EPILOG_0 624 + rfi 625 + 626 + #ifdef CONFIG_PPC_8xx_PERF_EVENT 627 + . = 0x1d00 628 + InstructionBreakpoint: 629 + EXCEPTION_PROLOG_0 630 + lis r10, (instruction_counter - PAGE_OFFSET)@ha 631 + lwz r11, (instruction_counter - PAGE_OFFSET)@l(r10) 632 + addi r11, r11, -1 633 + stw r11, (instruction_counter - PAGE_OFFSET)@l(r10) 634 + lis r10, 0xffff 635 + ori r10, r10, 0x01 636 + mtspr SPRN_COUNTA, r10 637 + EXCEPTION_EPILOG_0 638 + rfi 639 + #else 620 640 EXCEPTION(0x1d00, Trap_1d, unknown_exception, EXC_XFER_EE) 641 + #endif 621 642 EXCEPTION(0x1e00, Trap_1e, unknown_exception, EXC_XFER_EE) 622 643 EXCEPTION(0x1f00, Trap_1f, unknown_exception, EXC_XFER_EE) 623 644 ··· 1026 977 lis r8, IDC_ENABLE@h 1027 978 mtspr SPRN_DC_CST, r8 1028 979 #endif 980 + /* Disable debug mode entry on breakpoints */ 981 + mfspr r8, SPRN_DER 982 + #ifdef CONFIG_PPC_8xx_PERF_EVENT 983 + rlwinm r8, r8, 0, ~0xc 984 + #else 985 + rlwinm r8, r8, 0, ~0x8 986 + #endif 987 + mtspr SPRN_DER, r8 1029 988 blr 1030 989 1031 990 ··· 1067 1010 .space 16 1068 1011 #endif 1069 1012 1013 + #ifdef CONFIG_PPC_8xx_PERF_EVENT 1014 + .globl itlb_miss_counter 1015 + itlb_miss_counter: 1016 + .space 4 1017 + 1018 + .globl dtlb_miss_counter 1019 + dtlb_miss_counter: 1020 + .space 4 1021 + 1022 + .globl instruction_counter 1023 + instruction_counter: 1024 + .space 4 1025 + #endif
+5 -1
arch/powerpc/kernel/hw_breakpoint.c
··· 211 211 int rc = NOTIFY_STOP; 212 212 struct perf_event *bp; 213 213 struct pt_regs *regs = args->regs; 214 + #ifndef CONFIG_PPC_8xx 214 215 int stepped = 1; 215 - struct arch_hw_breakpoint *info; 216 216 unsigned int instr; 217 + #endif 218 + struct arch_hw_breakpoint *info; 217 219 unsigned long dar = regs->dar; 218 220 219 221 /* Disable breakpoints during exception handling */ ··· 259 257 (dar - bp->attr.bp_addr < bp->attr.bp_len))) 260 258 info->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ; 261 259 260 + #ifndef CONFIG_PPC_8xx 262 261 /* Do not emulate user-space instructions, instead single-step them */ 263 262 if (user_mode(regs)) { 264 263 current->thread.last_hit_ubp = bp; ··· 283 280 perf_event_disable_inatomic(bp); 284 281 goto out; 285 282 } 283 + #endif 286 284 /* 287 285 * As a policy, the callback is invoked in a 'trigger-after-execute' 288 286 * fashion
+7
arch/powerpc/kernel/optprobes_head.S
··· 65 65 mfdsisr r5 66 66 std r5,_DSISR(r1) 67 67 68 + /* 69 + * We may get here from a module, so load the kernel TOC in r2. 70 + * The original TOC gets restored when pt_regs is restored 71 + * further below. 72 + */ 73 + ld r2,PACATOC(r13) 74 + 68 75 .global optprobe_template_op_address 69 76 optprobe_template_op_address: 70 77 /*
+2 -8
arch/powerpc/kernel/pci-common.c
··· 1560 1560 /* Hookup PHB Memory resources */ 1561 1561 for (i = 0; i < 3; ++i) { 1562 1562 res = &hose->mem_resources[i]; 1563 - if (!res->flags) { 1564 - if (i == 0) 1565 - printk(KERN_ERR "PCI: Memory resource 0 not set for " 1566 - "host bridge %s (domain %d)\n", 1567 - hose->dn->full_name, hose->global_number); 1563 + if (!res->flags) 1568 1564 continue; 1569 - } 1565 + 1570 1566 offset = hose->mem_offset[i]; 1571 - 1572 - 1573 1567 pr_debug("PCI: PHB MEM resource %d = %pR off 0x%08llx\n", i, 1574 1568 res, (unsigned long long)offset); 1575 1569
+22
arch/powerpc/kernel/process.c
··· 730 730 mtspr(SPRN_DABRX, dabrx); 731 731 return 0; 732 732 } 733 + #elif defined(CONFIG_PPC_8xx) 734 + static inline int __set_dabr(unsigned long dabr, unsigned long dabrx) 735 + { 736 + unsigned long addr = dabr & ~HW_BRK_TYPE_DABR; 737 + unsigned long lctrl1 = 0x90000000; /* compare type: equal on E & F */ 738 + unsigned long lctrl2 = 0x8e000002; /* watchpoint 1 on cmp E | F */ 739 + 740 + if ((dabr & HW_BRK_TYPE_RDWR) == HW_BRK_TYPE_READ) 741 + lctrl1 |= 0xa0000; 742 + else if ((dabr & HW_BRK_TYPE_RDWR) == HW_BRK_TYPE_WRITE) 743 + lctrl1 |= 0xf0000; 744 + else if ((dabr & HW_BRK_TYPE_RDWR) == 0) 745 + lctrl2 = 0; 746 + 747 + mtspr(SPRN_LCTRL2, 0); 748 + mtspr(SPRN_CMPE, addr); 749 + mtspr(SPRN_CMPF, addr + 4); 750 + mtspr(SPRN_LCTRL1, lctrl1); 751 + mtspr(SPRN_LCTRL2, lctrl2); 752 + 753 + return 0; 754 + } 733 755 #else 734 756 static inline int __set_dabr(unsigned long dabr, unsigned long dabrx) 735 757 {
+1 -1
arch/powerpc/kernel/prom_init.c
··· 839 839 0, 840 840 #endif 841 841 .associativity = OV5_FEAT(OV5_TYPE1_AFFINITY) | OV5_FEAT(OV5_PRRN), 842 - .bin_opts = OV5_FEAT(OV5_RESIZE_HPT), 842 + .bin_opts = OV5_FEAT(OV5_RESIZE_HPT) | OV5_FEAT(OV5_HP_EVT), 843 843 .micro_checkpoint = 0, 844 844 .reserved0 = 0, 845 845 .max_cpus = cpu_to_be32(NR_CPUS), /* number of cores supported */
+5 -7
arch/powerpc/kernel/setup_64.c
··· 113 113 * If we have threads, we need either tlbsrx. 114 114 * or e6500 tablewalk mode, or else TLB handlers 115 115 * will be racy and could produce duplicate entries. 116 + * Should we panic instead? 116 117 */ 117 - if (smt_enabled_at_boot >= 2 && 118 - !mmu_has_feature(MMU_FTR_USE_TLBRSRV) && 119 - book3e_htw_mode != PPC_HTW_E6500) { 120 - /* Should we panic instead? */ 121 - WARN_ONCE("%s: unsupported MMU configuration -- expect problems\n", 122 - __func__); 123 - } 118 + WARN_ONCE(smt_enabled_at_boot >= 2 && 119 + !mmu_has_feature(MMU_FTR_USE_TLBRSRV) && 120 + book3e_htw_mode != PPC_HTW_E6500, 121 + "%s: unsupported MMU configuration\n", __func__); 124 122 } 125 123 } 126 124 #endif
+1 -1
arch/powerpc/kernel/time.c
··· 709 709 * time and on a host which doesn't do any virtualisation TB *should* equal 710 710 * VTB so it makes no difference anyway. 711 711 */ 712 - return local_clock() - cputime_to_nsecs(kcpustat_this_cpu->cpustat[CPUTIME_STEAL]); 712 + return local_clock() - kcpustat_this_cpu->cpustat[CPUTIME_STEAL]; 713 713 } 714 714 #endif 715 715
+1 -3
arch/powerpc/mm/pgtable.c
··· 193 193 */ 194 194 VM_WARN_ON(pte_present(*ptep) && !pte_protnone(*ptep)); 195 195 196 - /* 197 - * Add the pte bit when tryint set a pte 198 - */ 196 + /* Add the pte bit when trying to set a pte */ 199 197 pte = __pte(pte_val(pte) | _PAGE_PTE); 200 198 201 199 /* Note: mm->context.id might not yet have been assigned as
+16 -8
arch/powerpc/mm/slb_low.S
··· 71 71 72 72 73 73 BEGIN_FTR_SECTION 74 - b slb_finish_load 74 + b .Lslb_finish_load 75 75 END_MMU_FTR_SECTION_IFCLR(MMU_FTR_1T_SEGMENT) 76 - b slb_finish_load_1T 76 + b .Lslb_finish_load_1T 77 77 78 78 1: 79 79 #ifdef CONFIG_SPARSEMEM_VMEMMAP ··· 109 109 addi r9,r9,(MAX_USER_CONTEXT - 0xc + 1)@l 110 110 111 111 BEGIN_FTR_SECTION 112 - b slb_finish_load 112 + b .Lslb_finish_load 113 113 END_MMU_FTR_SECTION_IFCLR(MMU_FTR_1T_SEGMENT) 114 - b slb_finish_load_1T 114 + b .Lslb_finish_load_1T 115 115 116 116 0: /* 117 117 * For userspace addresses, make sure this is region 0. ··· 174 174 ld r9,PACACONTEXTID(r13) 175 175 BEGIN_FTR_SECTION 176 176 cmpldi r10,0x1000 177 - bge slb_finish_load_1T 177 + bge .Lslb_finish_load_1T 178 178 END_MMU_FTR_SECTION_IFSET(MMU_FTR_1T_SEGMENT) 179 - b slb_finish_load 179 + b .Lslb_finish_load 180 180 181 181 8: /* invalid EA - return an error indication */ 182 182 crset 4*cr0+eq /* indicate failure */ ··· 187 187 * 188 188 * r3 = EA, r9 = context, r10 = ESID, r11 = flags, clobbers r9, cr7 = <> PAGE_OFFSET 189 189 */ 190 - slb_finish_load: 190 + .Lslb_finish_load: 191 191 rldimi r10,r9,ESID_BITS,0 192 192 ASM_VSID_SCRAMBLE(r10,r9,256M) 193 193 /* ··· 256 256 * 257 257 * r3 = EA, r9 = context, r10 = ESID(256MB), r11 = flags, clobbers r9 258 258 */ 259 - slb_finish_load_1T: 259 + .Lslb_finish_load_1T: 260 260 srdi r10,r10,(SID_SHIFT_1T - SID_SHIFT) /* get 1T ESID */ 261 261 rldimi r10,r9,ESID_BITS_1T,0 262 262 ASM_VSID_SCRAMBLE(r10,r9,1T) ··· 272 272 clrrdi r3,r3,SID_SHIFT_1T /* clear out non-ESID bits */ 273 273 b 7b 274 274 275 + 276 + _ASM_NOKPROBE_SYMBOL(slb_allocate_realmode) 277 + _ASM_NOKPROBE_SYMBOL(slb_miss_kernel_load_linear) 278 + _ASM_NOKPROBE_SYMBOL(slb_miss_kernel_load_io) 279 + _ASM_NOKPROBE_SYMBOL(slb_compare_rr_to_size) 280 + #ifdef CONFIG_SPARSEMEM_VMEMMAP 281 + _ASM_NOKPROBE_SYMBOL(slb_miss_kernel_load_vmemmap) 282 + #endif
+173
arch/powerpc/perf/8xx-pmu.c
··· 1 + /* 2 + * Performance event support - PPC 8xx 3 + * 4 + * Copyright 2016 Christophe Leroy, CS Systemes d'Information 5 + * 6 + * This program is free software; you can redistribute it and/or 7 + * modify it under the terms of the GNU General Public License 8 + * as published by the Free Software Foundation; either version 9 + * 2 of the License, or (at your option) any later version. 10 + */ 11 + 12 + #include <linux/kernel.h> 13 + #include <linux/sched.h> 14 + #include <linux/perf_event.h> 15 + #include <linux/percpu.h> 16 + #include <linux/hardirq.h> 17 + #include <asm/pmc.h> 18 + #include <asm/machdep.h> 19 + #include <asm/firmware.h> 20 + #include <asm/ptrace.h> 21 + 22 + #define PERF_8xx_ID_CPU_CYCLES 1 23 + #define PERF_8xx_ID_HW_INSTRUCTIONS 2 24 + #define PERF_8xx_ID_ITLB_LOAD_MISS 3 25 + #define PERF_8xx_ID_DTLB_LOAD_MISS 4 26 + 27 + #define C(x) PERF_COUNT_HW_CACHE_##x 28 + #define DTLB_LOAD_MISS (C(DTLB) | (C(OP_READ) << 8) | (C(RESULT_MISS) << 16)) 29 + #define ITLB_LOAD_MISS (C(ITLB) | (C(OP_READ) << 8) | (C(RESULT_MISS) << 16)) 30 + 31 + extern unsigned long itlb_miss_counter, dtlb_miss_counter; 32 + extern atomic_t instruction_counter; 33 + 34 + static atomic_t insn_ctr_ref; 35 + 36 + static s64 get_insn_ctr(void) 37 + { 38 + int ctr; 39 + unsigned long counta; 40 + 41 + do { 42 + ctr = atomic_read(&instruction_counter); 43 + counta = mfspr(SPRN_COUNTA); 44 + } while (ctr != atomic_read(&instruction_counter)); 45 + 46 + return ((s64)ctr << 16) | (counta >> 16); 47 + } 48 + 49 + static int event_type(struct perf_event *event) 50 + { 51 + switch (event->attr.type) { 52 + case PERF_TYPE_HARDWARE: 53 + if (event->attr.config == PERF_COUNT_HW_CPU_CYCLES) 54 + return PERF_8xx_ID_CPU_CYCLES; 55 + if (event->attr.config == PERF_COUNT_HW_INSTRUCTIONS) 56 + return PERF_8xx_ID_HW_INSTRUCTIONS; 57 + break; 58 + case PERF_TYPE_HW_CACHE: 59 + if (event->attr.config == ITLB_LOAD_MISS) 60 + return PERF_8xx_ID_ITLB_LOAD_MISS; 61 + if (event->attr.config == DTLB_LOAD_MISS) 62 + return PERF_8xx_ID_DTLB_LOAD_MISS; 63 + break; 64 + case PERF_TYPE_RAW: 65 + break; 66 + default: 67 + return -ENOENT; 68 + } 69 + return -EOPNOTSUPP; 70 + } 71 + 72 + static int mpc8xx_pmu_event_init(struct perf_event *event) 73 + { 74 + int type = event_type(event); 75 + 76 + if (type < 0) 77 + return type; 78 + return 0; 79 + } 80 + 81 + static int mpc8xx_pmu_add(struct perf_event *event, int flags) 82 + { 83 + int type = event_type(event); 84 + s64 val = 0; 85 + 86 + if (type < 0) 87 + return type; 88 + 89 + switch (type) { 90 + case PERF_8xx_ID_CPU_CYCLES: 91 + val = get_tb(); 92 + break; 93 + case PERF_8xx_ID_HW_INSTRUCTIONS: 94 + if (atomic_inc_return(&insn_ctr_ref) == 1) 95 + mtspr(SPRN_ICTRL, 0xc0080007); 96 + val = get_insn_ctr(); 97 + break; 98 + case PERF_8xx_ID_ITLB_LOAD_MISS: 99 + val = itlb_miss_counter; 100 + break; 101 + case PERF_8xx_ID_DTLB_LOAD_MISS: 102 + val = dtlb_miss_counter; 103 + break; 104 + } 105 + local64_set(&event->hw.prev_count, val); 106 + return 0; 107 + } 108 + 109 + static void mpc8xx_pmu_read(struct perf_event *event) 110 + { 111 + int type = event_type(event); 112 + s64 prev, val = 0, delta = 0; 113 + 114 + if (type < 0) 115 + return; 116 + 117 + do { 118 + prev = local64_read(&event->hw.prev_count); 119 + switch (type) { 120 + case PERF_8xx_ID_CPU_CYCLES: 121 + val = get_tb(); 122 + delta = 16 * (val - prev); 123 + break; 124 + case PERF_8xx_ID_HW_INSTRUCTIONS: 125 + val = get_insn_ctr(); 126 + delta = prev - val; 127 + if (delta < 0) 128 + delta += 0x1000000000000LL; 129 + break; 130 + case PERF_8xx_ID_ITLB_LOAD_MISS: 131 + val = itlb_miss_counter; 132 + delta = (s64)((s32)val - (s32)prev); 133 + break; 134 + case PERF_8xx_ID_DTLB_LOAD_MISS: 135 + val = dtlb_miss_counter; 136 + delta = (s64)((s32)val - (s32)prev); 137 + break; 138 + } 139 + } while (local64_cmpxchg(&event->hw.prev_count, prev, val) != prev); 140 + 141 + local64_add(delta, &event->count); 142 + } 143 + 144 + static void mpc8xx_pmu_del(struct perf_event *event, int flags) 145 + { 146 + mpc8xx_pmu_read(event); 147 + if (event_type(event) != PERF_8xx_ID_HW_INSTRUCTIONS) 148 + return; 149 + 150 + /* If it was the last user, stop counting to avoid useles overhead */ 151 + if (atomic_dec_return(&insn_ctr_ref) == 0) 152 + mtspr(SPRN_ICTRL, 7); 153 + } 154 + 155 + static struct pmu mpc8xx_pmu = { 156 + .event_init = mpc8xx_pmu_event_init, 157 + .add = mpc8xx_pmu_add, 158 + .del = mpc8xx_pmu_del, 159 + .read = mpc8xx_pmu_read, 160 + .capabilities = PERF_PMU_CAP_NO_INTERRUPT | 161 + PERF_PMU_CAP_NO_NMI, 162 + }; 163 + 164 + static int init_mpc8xx_pmu(void) 165 + { 166 + mtspr(SPRN_ICTRL, 7); 167 + mtspr(SPRN_CMPA, 0); 168 + mtspr(SPRN_COUNTA, 0xffff); 169 + 170 + return perf_pmu_register(&mpc8xx_pmu, "cpu", PERF_TYPE_RAW); 171 + } 172 + 173 + early_initcall(init_mpc8xx_pmu);
+2
arch/powerpc/perf/Makefile
··· 13 13 14 14 obj-$(CONFIG_HV_PERF_CTRS) += hv-24x7.o hv-gpci.o hv-common.o 15 15 16 + obj-$(CONFIG_PPC_8xx_PERF_EVENT) += 8xx-pmu.o 17 + 16 18 obj-$(CONFIG_PPC64) += $(obj64-y) 17 19 obj-$(CONFIG_PPC32) += $(obj32-y)
+37 -1
arch/powerpc/perf/core-book3s.c
··· 57 57 void *bhrb_context; 58 58 struct perf_branch_stack bhrb_stack; 59 59 struct perf_branch_entry bhrb_entries[BHRB_MAX_ENTRIES]; 60 + u64 ic_init; 60 61 }; 61 62 62 63 static DEFINE_PER_CPU(struct cpu_hw_events, cpu_hw_events); ··· 128 127 static void power_pmu_sched_task(struct perf_event_context *ctx, bool sched_in) {} 129 128 static inline void power_pmu_bhrb_read(struct cpu_hw_events *cpuhw) {} 130 129 static void pmao_restore_workaround(bool ebb) { } 130 + static bool use_ic(u64 event) 131 + { 132 + return false; 133 + } 131 134 #endif /* CONFIG_PPC32 */ 132 135 133 136 static bool regs_use_siar(struct pt_regs *regs) ··· 248 243 */ 249 244 if (ppmu->flags & PPMU_NO_SIPR) { 250 245 unsigned long siar = mfspr(SPRN_SIAR); 251 - if (siar >= PAGE_OFFSET) 246 + if (is_kernel_addr(siar)) 252 247 return PERF_RECORD_MISC_KERNEL; 253 248 return PERF_RECORD_MISC_USER; 254 249 } ··· 693 688 mtspr(SPRN_PMC5, pmcs[4]); 694 689 mtspr(SPRN_PMC6, pmcs[5]); 695 690 } 691 + 692 + static bool use_ic(u64 event) 693 + { 694 + if (cpu_has_feature(CPU_FTR_POWER9_DD1) && 695 + (event == 0x200f2 || event == 0x300f2)) 696 + return true; 697 + 698 + return false; 699 + } 696 700 #endif /* CONFIG_PPC64 */ 697 701 698 702 static void perf_event_interrupt(struct pt_regs *regs); ··· 1021 1007 static void power_pmu_read(struct perf_event *event) 1022 1008 { 1023 1009 s64 val, delta, prev; 1010 + struct cpu_hw_events *cpuhw = this_cpu_ptr(&cpu_hw_events); 1024 1011 1025 1012 if (event->hw.state & PERF_HES_STOPPED) 1026 1013 return; ··· 1031 1016 1032 1017 if (is_ebb_event(event)) { 1033 1018 val = read_pmc(event->hw.idx); 1019 + if (use_ic(event->attr.config)) { 1020 + val = mfspr(SPRN_IC); 1021 + if (val > cpuhw->ic_init) 1022 + val = val - cpuhw->ic_init; 1023 + else 1024 + val = val + (0 - cpuhw->ic_init); 1025 + } 1034 1026 local64_set(&event->hw.prev_count, val); 1035 1027 return; 1036 1028 } ··· 1051 1029 prev = local64_read(&event->hw.prev_count); 1052 1030 barrier(); 1053 1031 val = read_pmc(event->hw.idx); 1032 + if (use_ic(event->attr.config)) { 1033 + val = mfspr(SPRN_IC); 1034 + if (val > cpuhw->ic_init) 1035 + val = val - cpuhw->ic_init; 1036 + else 1037 + val = val + (0 - cpuhw->ic_init); 1038 + } 1054 1039 delta = check_and_compute_delta(prev, val); 1055 1040 if (!delta) 1056 1041 return; ··· 1494 1465 cpuhw->bhrb_filter = ppmu->bhrb_filter_map( 1495 1466 event->attr.branch_sample_type); 1496 1467 } 1468 + 1469 + /* 1470 + * Workaround for POWER9 DD1 to use the Instruction Counter 1471 + * register value for instruction counting 1472 + */ 1473 + if (use_ic(event->attr.config)) 1474 + cpuhw->ic_init = mfspr(SPRN_IC); 1497 1475 1498 1476 perf_pmu_enable(event->pmu); 1499 1477 local_irq_restore(flags);
+75 -19
arch/powerpc/perf/isa207-common.c
··· 97 97 return MMCR1_COMBINE_SHIFT(pmc); 98 98 } 99 99 100 + static inline bool event_is_threshold(u64 event) 101 + { 102 + return (event >> EVENT_THR_SEL_SHIFT) & EVENT_THR_SEL_MASK; 103 + } 104 + 105 + static bool is_thresh_cmp_valid(u64 event) 106 + { 107 + unsigned int cmp, exp; 108 + 109 + /* 110 + * Check the mantissa upper two bits are not zero, unless the 111 + * exponent is also zero. See the THRESH_CMP_MANTISSA doc. 112 + */ 113 + cmp = (event >> EVENT_THR_CMP_SHIFT) & EVENT_THR_CMP_MASK; 114 + exp = cmp >> 7; 115 + 116 + if (exp && (cmp & 0x60) == 0) 117 + return false; 118 + 119 + return true; 120 + } 121 + 100 122 int isa207_get_constraint(u64 event, unsigned long *maskp, unsigned long *valp) 101 123 { 102 124 unsigned int unit, pmc, cache, ebb; ··· 185 163 value |= CNST_SAMPLE_VAL(event >> EVENT_SAMPLE_SHIFT); 186 164 } 187 165 188 - /* 189 - * Special case for PM_MRK_FAB_RSP_MATCH and PM_MRK_FAB_RSP_MATCH_CYC, 190 - * the threshold control bits are used for the match value. 191 - */ 192 - if (event_is_fab_match(event)) { 193 - mask |= CNST_FAB_MATCH_MASK; 194 - value |= CNST_FAB_MATCH_VAL(event >> EVENT_THR_CTL_SHIFT); 166 + if (cpu_has_feature(CPU_FTR_ARCH_300)) { 167 + if (event_is_threshold(event) && is_thresh_cmp_valid(event)) { 168 + mask |= CNST_THRESH_MASK; 169 + value |= CNST_THRESH_VAL(event >> EVENT_THRESH_SHIFT); 170 + } 195 171 } else { 196 172 /* 197 - * Check the mantissa upper two bits are not zero, unless the 198 - * exponent is also zero. See the THRESH_CMP_MANTISSA doc. 173 + * Special case for PM_MRK_FAB_RSP_MATCH and PM_MRK_FAB_RSP_MATCH_CYC, 174 + * the threshold control bits are used for the match value. 199 175 */ 200 - unsigned int cmp, exp; 176 + if (event_is_fab_match(event)) { 177 + mask |= CNST_FAB_MATCH_MASK; 178 + value |= CNST_FAB_MATCH_VAL(event >> EVENT_THR_CTL_SHIFT); 179 + } else { 180 + if (!is_thresh_cmp_valid(event)) 181 + return -1; 201 182 202 - cmp = (event >> EVENT_THR_CMP_SHIFT) & EVENT_THR_CMP_MASK; 203 - exp = cmp >> 7; 204 - 205 - if (exp && (cmp & 0x60) == 0) 206 - return -1; 207 - 208 - mask |= CNST_THRESH_MASK; 209 - value |= CNST_THRESH_VAL(event >> EVENT_THRESH_SHIFT); 183 + mask |= CNST_THRESH_MASK; 184 + value |= CNST_THRESH_VAL(event >> EVENT_THRESH_SHIFT); 185 + } 210 186 } 211 187 212 188 if (!pmc && ebb) ··· 299 279 * PM_MRK_FAB_RSP_MATCH and PM_MRK_FAB_RSP_MATCH_CYC, 300 280 * the threshold bits are used for the match value. 301 281 */ 302 - if (event_is_fab_match(event[i])) { 282 + if (!cpu_has_feature(CPU_FTR_ARCH_300) && event_is_fab_match(event[i])) { 303 283 mmcr1 |= ((event[i] >> EVENT_THR_CTL_SHIFT) & 304 284 EVENT_THR_CTL_MASK) << MMCR1_FAB_SHIFT; 305 285 } else { ··· 357 337 { 358 338 if (pmc <= 3) 359 339 mmcr[1] &= ~(0xffUL << MMCR1_PMCSEL_SHIFT(pmc + 1)); 340 + } 341 + 342 + static int find_alternative(u64 event, const unsigned int ev_alt[][MAX_ALT], int size) 343 + { 344 + int i, j; 345 + 346 + for (i = 0; i < size; ++i) { 347 + if (event < ev_alt[i][0]) 348 + break; 349 + 350 + for (j = 0; j < MAX_ALT && ev_alt[i][j]; ++j) 351 + if (event == ev_alt[i][j]) 352 + return i; 353 + } 354 + 355 + return -1; 356 + } 357 + 358 + int isa207_get_alternatives(u64 event, u64 alt[], 359 + const unsigned int ev_alt[][MAX_ALT], int size) 360 + { 361 + int i, j, num_alt = 0; 362 + u64 alt_event; 363 + 364 + alt[num_alt++] = event; 365 + i = find_alternative(event, ev_alt, size); 366 + if (i >= 0) { 367 + /* Filter out the original event, it's already in alt[0] */ 368 + for (j = 0; j < MAX_ALT; ++j) { 369 + alt_event = ev_alt[i][j]; 370 + if (alt_event && alt_event != event) 371 + alt[num_alt++] = alt_event; 372 + } 373 + } 374 + 375 + return num_alt; 360 376 }
+7
arch/powerpc/perf/isa207-common.h
··· 222 222 CNST_PMC_VAL(1) | CNST_PMC_VAL(2) | CNST_PMC_VAL(3) | \ 223 223 CNST_PMC_VAL(4) | CNST_PMC_VAL(5) | CNST_PMC_VAL(6) | CNST_NC_VAL 224 224 225 + /* 226 + * Lets restrict use of PMC5 for instruction counting. 227 + */ 228 + #define P9_DD1_TEST_ADDER (ISA207_TEST_ADDER | CNST_PMC_VAL(5)) 225 229 226 230 /* Bits in MMCR1 for PowerISA v2.07 */ 227 231 #define MMCR1_UNIT_SHIFT(pmc) (60 - (4 * ((pmc) - 1))) ··· 264 260 unsigned int hwc[], unsigned long mmcr[], 265 261 struct perf_event *pevents[]); 266 262 void isa207_disable_pmc(unsigned int pmc, unsigned long mmcr[]); 263 + int isa207_get_alternatives(u64 event, u64 alt[], 264 + const unsigned int ev_alt[][MAX_ALT], int size); 265 + 267 266 268 267 #endif
+2 -33
arch/powerpc/perf/power8-pmu.c
··· 48 48 { PM_RUN_INST_CMPL_ALT, PM_RUN_INST_CMPL }, 49 49 }; 50 50 51 - /* 52 - * Scan the alternatives table for a match and return the 53 - * index into the alternatives table if found, else -1. 54 - */ 55 - static int find_alternative(u64 event) 56 - { 57 - int i, j; 58 - 59 - for (i = 0; i < ARRAY_SIZE(event_alternatives); ++i) { 60 - if (event < event_alternatives[i][0]) 61 - break; 62 - 63 - for (j = 0; j < MAX_ALT && event_alternatives[i][j]; ++j) 64 - if (event == event_alternatives[i][j]) 65 - return i; 66 - } 67 - 68 - return -1; 69 - } 70 - 71 51 static int power8_get_alternatives(u64 event, unsigned int flags, u64 alt[]) 72 52 { 73 53 int i, j, num_alt = 0; 74 - u64 alt_event; 75 54 76 - alt[num_alt++] = event; 77 - 78 - i = find_alternative(event); 79 - if (i >= 0) { 80 - /* Filter out the original event, it's already in alt[0] */ 81 - for (j = 0; j < MAX_ALT; ++j) { 82 - alt_event = event_alternatives[i][j]; 83 - if (alt_event && alt_event != event) 84 - alt[num_alt++] = alt_event; 85 - } 86 - } 87 - 55 + num_alt = isa207_get_alternatives(event, alt, event_alternatives, 56 + (int)ARRAY_SIZE(event_alternatives)); 88 57 if (flags & PPMU_ONLY_COUNT_RUN) { 89 58 /* 90 59 * We're only counting in RUN state, so PM_CYC is equivalent to
+3
arch/powerpc/perf/power9-events-list.h
··· 53 53 EVENT(PM_RUN_INST_CMPL, 0x500fa) 54 54 /* Run_cycles */ 55 55 EVENT(PM_RUN_CYC, 0x600f4) 56 + /* Instruction Dispatched */ 57 + EVENT(PM_INST_DISP, 0x200f2) 58 + EVENT(PM_INST_DISP_ALT, 0x300f2)
+39 -8
arch/powerpc/perf/power9-pmu.c
··· 22 22 * | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | - - - - | 23 23 * | | [ ] [ ] [ thresh_cmp ] [ thresh_ctl ] 24 24 * | | | | | 25 - * | | *- IFM (Linux) | thresh start/stop OR FAB match -* 25 + * | | *- IFM (Linux) | thresh start/stop -* 26 26 * | *- BHRB (Linux) *sm 27 27 * *- EBB (Linux) 28 28 * ··· 50 50 * MMCR1[31] = pmc4combine[1] 51 51 * 52 52 * if pmc == 3 and unit == 0 and pmcxsel[0:6] == 0b0101011 53 - * # PM_MRK_FAB_RSP_MATCH 54 - * MMCR1[20:27] = thresh_ctl (FAB_CRESP_MATCH / FAB_TYPE_MATCH) 53 + * MMCR1[20:27] = thresh_ctl 55 54 * else if pmc == 4 and unit == 0xf and pmcxsel[0:6] == 0b0101001 56 - * # PM_MRK_FAB_RSP_MATCH_CYC 57 - * MMCR1[20:27] = thresh_ctl (FAB_CRESP_MATCH / FAB_TYPE_MATCH) 55 + * MMCR1[20:27] = thresh_ctl 58 56 * else 59 57 * MMCRA[48:55] = thresh_ctl (THRESH START/END) 60 58 * ··· 103 105 104 106 /* PowerISA v2.07 format attribute structure*/ 105 107 extern struct attribute_group isa207_pmu_format_group; 108 + 109 + /* Table of alternatives, sorted by column 0 */ 110 + static const unsigned int power9_event_alternatives[][MAX_ALT] = { 111 + { PM_INST_DISP, PM_INST_DISP_ALT }, 112 + }; 113 + 114 + static int power9_get_alternatives(u64 event, unsigned int flags, u64 alt[]) 115 + { 116 + int num_alt = 0; 117 + 118 + num_alt = isa207_get_alternatives(event, alt, power9_event_alternatives, 119 + (int)ARRAY_SIZE(power9_event_alternatives)); 120 + 121 + return num_alt; 122 + } 106 123 107 124 GENERIC_EVENT_ATTR(cpu-cycles, PM_CYC); 108 125 GENERIC_EVENT_ATTR(stalled-cycles-frontend, PM_ICT_NOSLOT_CYC); ··· 224 211 &power9_pmu_format_group, 225 212 &power9_pmu_events_group, 226 213 NULL, 214 + }; 215 + 216 + static int power9_generic_events_dd1[] = { 217 + [PERF_COUNT_HW_CPU_CYCLES] = PM_CYC, 218 + [PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] = PM_ICT_NOSLOT_CYC, 219 + [PERF_COUNT_HW_STALLED_CYCLES_BACKEND] = PM_CMPLU_STALL, 220 + [PERF_COUNT_HW_INSTRUCTIONS] = PM_INST_DISP, 221 + [PERF_COUNT_HW_BRANCH_INSTRUCTIONS] = PM_BRU_CMPL, 222 + [PERF_COUNT_HW_BRANCH_MISSES] = PM_BR_MPRED_CMPL, 223 + [PERF_COUNT_HW_CACHE_REFERENCES] = PM_LD_REF_L1, 224 + [PERF_COUNT_HW_CACHE_MISSES] = PM_LD_MISS_L1_FIN, 227 225 }; 228 226 229 227 static int power9_generic_events[] = { ··· 407 383 .config_bhrb = power9_config_bhrb, 408 384 .bhrb_filter_map = power9_bhrb_filter_map, 409 385 .get_constraint = isa207_get_constraint, 386 + .get_alternatives = power9_get_alternatives, 410 387 .disable_pmc = isa207_disable_pmc, 411 388 .flags = PPMU_NO_SIAR | PPMU_ARCH_207S, 412 - .n_generic = ARRAY_SIZE(power9_generic_events), 413 - .generic_events = power9_generic_events, 389 + .n_generic = ARRAY_SIZE(power9_generic_events_dd1), 390 + .generic_events = power9_generic_events_dd1, 414 391 .cache_events = &power9_cache_events, 415 392 .attr_groups = power9_isa207_pmu_attr_groups, 416 393 .bhrb_nr = 32, ··· 421 396 .name = "POWER9", 422 397 .n_counter = MAX_PMU_COUNTERS, 423 398 .add_fields = ISA207_ADD_FIELDS, 424 - .test_adder = ISA207_TEST_ADDER, 399 + .test_adder = P9_DD1_TEST_ADDER, 425 400 .compute_mmcr = isa207_compute_mmcr, 426 401 .config_bhrb = power9_config_bhrb, 427 402 .bhrb_filter_map = power9_bhrb_filter_map, 428 403 .get_constraint = isa207_get_constraint, 404 + .get_alternatives = power9_get_alternatives, 429 405 .disable_pmc = isa207_disable_pmc, 430 406 .flags = PPMU_HAS_SIER | PPMU_ARCH_207S, 431 407 .n_generic = ARRAY_SIZE(power9_generic_events), ··· 446 420 return -ENODEV; 447 421 448 422 if (cpu_has_feature(CPU_FTR_POWER9_DD1)) { 423 + /* 424 + * Since PM_INST_CMPL may not provide right counts in all 425 + * sampling scenarios in power9 DD1, instead use PM_INST_DISP. 426 + */ 427 + EVENT_VAR(PM_INST_CMPL, _g).id = PM_INST_DISP; 449 428 rc = register_power_pmu(&power9_isa207_pmu); 450 429 } else { 451 430 rc = register_power_pmu(&power9_pmu);
+1
arch/powerpc/platforms/85xx/Makefile
··· 22 22 obj-$(CONFIG_P1023_RDB) += p1023_rdb.o 23 23 obj-$(CONFIG_TWR_P102x) += twr_p102x.o 24 24 obj-$(CONFIG_CORENET_GENERIC) += corenet_generic.o 25 + obj-$(CONFIG_FB_FSL_DIU) += t1042rdb_diu.o 25 26 obj-$(CONFIG_STX_GP3) += stx_gp3.o 26 27 obj-$(CONFIG_TQM85xx) += tqm85xx.o 27 28 obj-$(CONFIG_SBC8548) += sbc8548.o
+1
arch/powerpc/platforms/85xx/corenet_generic.c
··· 157 157 "fsl,T1040RDB", 158 158 "fsl,T1042RDB", 159 159 "fsl,T1042RDB_PI", 160 + "keymile,kmcent2", 160 161 "keymile,kmcoge4", 161 162 "varisys,CYRUS", 162 163 NULL
+152
arch/powerpc/platforms/85xx/t1042rdb_diu.c
··· 1 + /* 2 + * T1042 platform DIU operation 3 + * 4 + * Copyright 2014 Freescale Semiconductor Inc. 5 + * 6 + * This program is free software; you can redistribute it and/or modify it 7 + * under the terms of the GNU General Public License as published by the 8 + * Free Software Foundation; either version 2 of the License, or (at your 9 + * option) any later version. 10 + */ 11 + 12 + #include <linux/io.h> 13 + #include <linux/kernel.h> 14 + #include <linux/of.h> 15 + #include <linux/of_address.h> 16 + 17 + #include <sysdev/fsl_soc.h> 18 + 19 + /*DIU Pixel ClockCR offset in scfg*/ 20 + #define CCSR_SCFG_PIXCLKCR 0x28 21 + 22 + /* DIU Pixel Clock bits of the PIXCLKCR */ 23 + #define PIXCLKCR_PXCKEN 0x80000000 24 + #define PIXCLKCR_PXCKINV 0x40000000 25 + #define PIXCLKCR_PXCKDLY 0x0000FF00 26 + #define PIXCLKCR_PXCLK_MASK 0x00FF0000 27 + 28 + /* Some CPLD register definitions */ 29 + #define CPLD_DIUCSR 0x16 30 + #define CPLD_DIUCSR_DVIEN 0x80 31 + #define CPLD_DIUCSR_BACKLIGHT 0x0f 32 + 33 + struct device_node *cpld_node; 34 + 35 + /** 36 + * t1042rdb_set_monitor_port: switch the output to a different monitor port 37 + */ 38 + static void t1042rdb_set_monitor_port(enum fsl_diu_monitor_port port) 39 + { 40 + static void __iomem *cpld_base; 41 + 42 + cpld_base = of_iomap(cpld_node, 0); 43 + if (!cpld_base) { 44 + pr_err("%s: Could not map cpld registers\n", __func__); 45 + goto exit; 46 + } 47 + 48 + switch (port) { 49 + case FSL_DIU_PORT_DVI: 50 + /* Enable the DVI(HDMI) port, disable the DFP and 51 + * the backlight 52 + */ 53 + clrbits8(cpld_base + CPLD_DIUCSR, CPLD_DIUCSR_DVIEN); 54 + break; 55 + case FSL_DIU_PORT_LVDS: 56 + /* 57 + * LVDS also needs backlight enabled, otherwise the display 58 + * will be blank. 59 + */ 60 + /* Enable the DFP port, disable the DVI*/ 61 + setbits8(cpld_base + CPLD_DIUCSR, 0x01 << 8); 62 + setbits8(cpld_base + CPLD_DIUCSR, 0x01 << 4); 63 + setbits8(cpld_base + CPLD_DIUCSR, CPLD_DIUCSR_BACKLIGHT); 64 + break; 65 + default: 66 + pr_err("%s: Unsupported monitor port %i\n", __func__, port); 67 + } 68 + 69 + iounmap(cpld_base); 70 + exit: 71 + of_node_put(cpld_node); 72 + } 73 + 74 + /** 75 + * t1042rdb_set_pixel_clock: program the DIU's clock 76 + * @pixclock: pixel clock in ps (pico seconds) 77 + */ 78 + static void t1042rdb_set_pixel_clock(unsigned int pixclock) 79 + { 80 + struct device_node *scfg_np; 81 + void __iomem *scfg; 82 + unsigned long freq; 83 + u64 temp; 84 + u32 pxclk; 85 + 86 + scfg_np = of_find_compatible_node(NULL, NULL, "fsl,t1040-scfg"); 87 + if (!scfg_np) { 88 + pr_err("%s: Missing scfg node. Can not display video.\n", 89 + __func__); 90 + return; 91 + } 92 + 93 + scfg = of_iomap(scfg_np, 0); 94 + of_node_put(scfg_np); 95 + if (!scfg) { 96 + pr_err("%s: Could not map device. Can not display video.\n", 97 + __func__); 98 + return; 99 + } 100 + 101 + /* Convert pixclock into frequency */ 102 + temp = 1000000000000ULL; 103 + do_div(temp, pixclock); 104 + freq = temp; 105 + 106 + /* 107 + * 'pxclk' is the ratio of the platform clock to the pixel clock. 108 + * This number is programmed into the PIXCLKCR register, and the valid 109 + * range of values is 2-255. 110 + */ 111 + pxclk = DIV_ROUND_CLOSEST(fsl_get_sys_freq(), freq); 112 + pxclk = clamp_t(u32, pxclk, 2, 255); 113 + 114 + /* Disable the pixel clock, and set it to non-inverted and no delay */ 115 + clrbits32(scfg + CCSR_SCFG_PIXCLKCR, 116 + PIXCLKCR_PXCKEN | PIXCLKCR_PXCKDLY | PIXCLKCR_PXCLK_MASK); 117 + 118 + /* Enable the clock and set the pxclk */ 119 + setbits32(scfg + CCSR_SCFG_PIXCLKCR, PIXCLKCR_PXCKEN | (pxclk << 16)); 120 + 121 + iounmap(scfg); 122 + } 123 + 124 + /** 125 + * t1042rdb_valid_monitor_port: set the monitor port for sysfs 126 + */ 127 + static enum fsl_diu_monitor_port 128 + t1042rdb_valid_monitor_port(enum fsl_diu_monitor_port port) 129 + { 130 + switch (port) { 131 + case FSL_DIU_PORT_DVI: 132 + case FSL_DIU_PORT_LVDS: 133 + return port; 134 + default: 135 + return FSL_DIU_PORT_DVI; /* Dual-link LVDS is not supported */ 136 + } 137 + } 138 + 139 + static int __init t1042rdb_diu_init(void) 140 + { 141 + cpld_node = of_find_compatible_node(NULL, NULL, "fsl,t1042rdb-cpld"); 142 + if (!cpld_node) 143 + return 0; 144 + 145 + diu_ops.set_monitor_port = t1042rdb_set_monitor_port; 146 + diu_ops.set_pixel_clock = t1042rdb_set_pixel_clock; 147 + diu_ops.valid_monitor_port = t1042rdb_valid_monitor_port; 148 + 149 + return 0; 150 + } 151 + 152 + early_initcall(t1042rdb_diu_init);
+7
arch/powerpc/platforms/Kconfig.cputype
··· 172 172 bool 173 173 default y if PPC64 174 174 175 + config PPC_8xx_PERF_EVENT 176 + bool "PPC 8xx perf events" 177 + depends on PPC_8xx && PERF_EVENTS 178 + help 179 + This is Performance Events support for PPC 8xx. The 8xx doesn't 180 + have a PMU but some events are emulated using 8xx features. 181 + 175 182 config FSL_EMB_PERFMON 176 183 bool "Freescale Embedded Perfmon" 177 184 depends on E500 || PPC_83xx
+6 -59
arch/powerpc/platforms/cell/spufs/file.c
··· 683 683 return ctx->ops->ibox_read(ctx, data); 684 684 } 685 685 686 - static int spufs_ibox_fasync(int fd, struct file *file, int on) 687 - { 688 - struct spu_context *ctx = file->private_data; 689 - 690 - return fasync_helper(fd, file, on, &ctx->ibox_fasync); 691 - } 692 - 693 686 /* interrupt-level ibox callback function. */ 694 687 void spufs_ibox_callback(struct spu *spu) 695 688 { 696 689 struct spu_context *ctx = spu->ctx; 697 690 698 - if (!ctx) 699 - return; 700 - 701 - wake_up_all(&ctx->ibox_wq); 702 - kill_fasync(&ctx->ibox_fasync, SIGIO, POLLIN); 691 + if (ctx) 692 + wake_up_all(&ctx->ibox_wq); 703 693 } 704 694 705 695 /* ··· 784 794 .open = spufs_pipe_open, 785 795 .read = spufs_ibox_read, 786 796 .poll = spufs_ibox_poll, 787 - .fasync = spufs_ibox_fasync, 788 797 .llseek = no_llseek, 789 798 }; 790 799 ··· 821 832 return ctx->ops->wbox_write(ctx, data); 822 833 } 823 834 824 - static int spufs_wbox_fasync(int fd, struct file *file, int on) 825 - { 826 - struct spu_context *ctx = file->private_data; 827 - int ret; 828 - 829 - ret = fasync_helper(fd, file, on, &ctx->wbox_fasync); 830 - 831 - return ret; 832 - } 833 - 834 835 /* interrupt-level wbox callback function. */ 835 836 void spufs_wbox_callback(struct spu *spu) 836 837 { 837 838 struct spu_context *ctx = spu->ctx; 838 839 839 - if (!ctx) 840 - return; 841 - 842 - wake_up_all(&ctx->wbox_wq); 843 - kill_fasync(&ctx->wbox_fasync, SIGIO, POLLOUT); 840 + if (ctx) 841 + wake_up_all(&ctx->wbox_wq); 844 842 } 845 843 846 844 /* ··· 920 944 .open = spufs_pipe_open, 921 945 .write = spufs_wbox_write, 922 946 .poll = spufs_wbox_poll, 923 - .fasync = spufs_wbox_fasync, 924 947 .llseek = no_llseek, 925 948 }; 926 949 ··· 1495 1520 { 1496 1521 struct spu_context *ctx = spu->ctx; 1497 1522 1498 - if (!ctx) 1499 - return; 1500 - 1501 - wake_up_all(&ctx->mfc_wq); 1502 - 1503 - pr_debug("%s %s\n", __func__, spu->name); 1504 - if (ctx->mfc_fasync) { 1505 - u32 free_elements, tagstatus; 1506 - unsigned int mask; 1507 - 1508 - /* no need for spu_acquire in interrupt context */ 1509 - free_elements = ctx->ops->get_mfc_free_elements(ctx); 1510 - tagstatus = ctx->ops->read_mfc_tagstatus(ctx); 1511 - 1512 - mask = 0; 1513 - if (free_elements & 0xffff) 1514 - mask |= POLLOUT; 1515 - if (tagstatus & ctx->tagwait) 1516 - mask |= POLLIN; 1517 - 1518 - kill_fasync(&ctx->mfc_fasync, SIGIO, mask); 1519 - } 1523 + if (ctx) 1524 + wake_up_all(&ctx->mfc_wq); 1520 1525 } 1521 1526 1522 1527 static int spufs_read_mfc_tagstatus(struct spu_context *ctx, u32 *status) ··· 1758 1803 return err; 1759 1804 } 1760 1805 1761 - static int spufs_mfc_fasync(int fd, struct file *file, int on) 1762 - { 1763 - struct spu_context *ctx = file->private_data; 1764 - 1765 - return fasync_helper(fd, file, on, &ctx->mfc_fasync); 1766 - } 1767 - 1768 1806 static const struct file_operations spufs_mfc_fops = { 1769 1807 .open = spufs_mfc_open, 1770 1808 .release = spufs_mfc_release, ··· 1766 1818 .poll = spufs_mfc_poll, 1767 1819 .flush = spufs_mfc_flush, 1768 1820 .fsync = spufs_mfc_fsync, 1769 - .fasync = spufs_mfc_fasync, 1770 1821 .mmap = spufs_mfc_mmap, 1771 1822 .llseek = no_llseek, 1772 1823 };
-3
arch/powerpc/platforms/cell/spufs/spufs.h
··· 102 102 wait_queue_head_t stop_wq; 103 103 wait_queue_head_t mfc_wq; 104 104 wait_queue_head_t run_wq; 105 - struct fasync_struct *ibox_fasync; 106 - struct fasync_struct *wbox_fasync; 107 - struct fasync_struct *mfc_fasync; 108 105 u32 tagwait; 109 106 struct spu_context_ops *ops; 110 107 struct work_struct reap_work;
+2 -1
arch/powerpc/platforms/powernv/Kconfig
··· 5 5 select PPC_XICS 6 6 select PPC_ICP_NATIVE 7 7 select PPC_P7_NAP 8 - select PPC_PCI_CHOICE if EMBEDDED 8 + select PCI 9 + select PCI_MSI 9 10 select EPAPR_BOOT 10 11 select PPC_INDIRECT_PIO 11 12 select PPC_UDBG_16550
-2
arch/powerpc/platforms/powernv/pci-ioda.c
··· 1468 1468 struct pnv_phb *phb; 1469 1469 struct pnv_ioda_pe *pe; 1470 1470 struct pci_dn *pdn; 1471 - struct pci_sriov *iov; 1472 1471 u16 num_vfs, i; 1473 1472 1474 1473 bus = pdev->bus; 1475 1474 hose = pci_bus_to_host(bus); 1476 1475 phb = hose->private_data; 1477 1476 pdn = pci_get_pdn(pdev); 1478 - iov = pdev->sriov; 1479 1477 num_vfs = pdn->num_vfs; 1480 1478 1481 1479 /* Release VF PEs */
+35 -3
arch/powerpc/platforms/pseries/dlpar.c
··· 354 354 switch (hp_elog->id_type) { 355 355 case PSERIES_HP_ELOG_ID_DRC_COUNT: 356 356 hp_elog->_drc_u.drc_count = 357 - be32_to_cpu(hp_elog->_drc_u.drc_count); 357 + be32_to_cpu(hp_elog->_drc_u.drc_count); 358 358 break; 359 359 case PSERIES_HP_ELOG_ID_DRC_INDEX: 360 360 hp_elog->_drc_u.drc_index = 361 - be32_to_cpu(hp_elog->_drc_u.drc_index); 361 + be32_to_cpu(hp_elog->_drc_u.drc_index); 362 + break; 363 + case PSERIES_HP_ELOG_ID_DRC_IC: 364 + hp_elog->_drc_u.ic.count = 365 + be32_to_cpu(hp_elog->_drc_u.ic.count); 366 + hp_elog->_drc_u.ic.index = 367 + be32_to_cpu(hp_elog->_drc_u.ic.index); 362 368 } 363 369 364 370 switch (hp_elog->resource) { ··· 473 467 if (!arg) 474 468 return -EINVAL; 475 469 476 - if (sysfs_streq(arg, "index")) { 470 + if (sysfs_streq(arg, "indexed-count")) { 471 + hp_elog->id_type = PSERIES_HP_ELOG_ID_DRC_IC; 472 + arg = strsep(cmd, " "); 473 + if (!arg) { 474 + pr_err("No DRC count specified.\n"); 475 + return -EINVAL; 476 + } 477 + 478 + if (kstrtou32(arg, 0, &count)) { 479 + pr_err("Invalid DRC count specified.\n"); 480 + return -EINVAL; 481 + } 482 + 483 + arg = strsep(cmd, " "); 484 + if (!arg) { 485 + pr_err("No DRC Index specified.\n"); 486 + return -EINVAL; 487 + } 488 + 489 + if (kstrtou32(arg, 0, &index)) { 490 + pr_err("Invalid DRC Index specified.\n"); 491 + return -EINVAL; 492 + } 493 + 494 + hp_elog->_drc_u.ic.count = cpu_to_be32(count); 495 + hp_elog->_drc_u.ic.index = cpu_to_be32(index); 496 + } else if (sysfs_streq(arg, "index")) { 477 497 hp_elog->id_type = PSERIES_HP_ELOG_ID_DRC_INDEX; 478 498 arg = strsep(cmd, " "); 479 499 if (!arg) {
+248 -24
arch/powerpc/platforms/pseries/hotplug-memory.c
··· 320 320 return dlpar_update_device_tree_lmb(lmb); 321 321 } 322 322 323 + static struct memory_block *lmb_to_memblock(struct of_drconf_cell *lmb) 324 + { 325 + unsigned long section_nr; 326 + struct mem_section *mem_sect; 327 + struct memory_block *mem_block; 328 + 329 + section_nr = pfn_to_section_nr(PFN_DOWN(lmb->base_addr)); 330 + mem_sect = __nr_to_section(section_nr); 331 + 332 + mem_block = find_memory_block(mem_sect); 333 + return mem_block; 334 + } 335 + 323 336 #ifdef CONFIG_MEMORY_HOTREMOVE 324 337 static int pseries_remove_memblock(unsigned long base, unsigned int memblock_size) 325 338 { ··· 419 406 } 420 407 421 408 static int dlpar_add_lmb(struct of_drconf_cell *); 422 - 423 - static struct memory_block *lmb_to_memblock(struct of_drconf_cell *lmb) 424 - { 425 - unsigned long section_nr; 426 - struct mem_section *mem_sect; 427 - struct memory_block *mem_block; 428 - 429 - section_nr = pfn_to_section_nr(PFN_DOWN(lmb->base_addr)); 430 - mem_sect = __nr_to_section(section_nr); 431 - 432 - mem_block = find_memory_block(mem_sect); 433 - return mem_block; 434 - } 435 409 436 410 static int dlpar_remove_lmb(struct of_drconf_cell *lmb) 437 411 { ··· 601 601 602 602 return rc; 603 603 } 604 + 605 + static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index, 606 + struct property *prop) 607 + { 608 + struct of_drconf_cell *lmbs; 609 + u32 num_lmbs, *p; 610 + int i, rc, start_lmb_found; 611 + int lmbs_available = 0, start_index = 0, end_index; 612 + 613 + pr_info("Attempting to hot-remove %u LMB(s) at %x\n", 614 + lmbs_to_remove, drc_index); 615 + 616 + if (lmbs_to_remove == 0) 617 + return -EINVAL; 618 + 619 + p = prop->value; 620 + num_lmbs = *p++; 621 + lmbs = (struct of_drconf_cell *)p; 622 + start_lmb_found = 0; 623 + 624 + /* Navigate to drc_index */ 625 + while (start_index < num_lmbs) { 626 + if (lmbs[start_index].drc_index == drc_index) { 627 + start_lmb_found = 1; 628 + break; 629 + } 630 + 631 + start_index++; 632 + } 633 + 634 + if (!start_lmb_found) 635 + return -EINVAL; 636 + 637 + end_index = start_index + lmbs_to_remove; 638 + 639 + /* Validate that there are enough LMBs to satisfy the request */ 640 + for (i = start_index; i < end_index; i++) { 641 + if (lmbs[i].flags & DRCONF_MEM_RESERVED) 642 + break; 643 + 644 + lmbs_available++; 645 + } 646 + 647 + if (lmbs_available < lmbs_to_remove) 648 + return -EINVAL; 649 + 650 + for (i = start_index; i < end_index; i++) { 651 + if (!(lmbs[i].flags & DRCONF_MEM_ASSIGNED)) 652 + continue; 653 + 654 + rc = dlpar_remove_lmb(&lmbs[i]); 655 + if (rc) 656 + break; 657 + 658 + lmbs[i].reserved = 1; 659 + } 660 + 661 + if (rc) { 662 + pr_err("Memory indexed-count-remove failed, adding any removed LMBs\n"); 663 + 664 + for (i = start_index; i < end_index; i++) { 665 + if (!lmbs[i].reserved) 666 + continue; 667 + 668 + rc = dlpar_add_lmb(&lmbs[i]); 669 + if (rc) 670 + pr_err("Failed to add LMB, drc index %x\n", 671 + be32_to_cpu(lmbs[i].drc_index)); 672 + 673 + lmbs[i].reserved = 0; 674 + } 675 + rc = -EINVAL; 676 + } else { 677 + for (i = start_index; i < end_index; i++) { 678 + if (!lmbs[i].reserved) 679 + continue; 680 + 681 + dlpar_release_drc(lmbs[i].drc_index); 682 + pr_info("Memory at %llx (drc index %x) was hot-removed\n", 683 + lmbs[i].base_addr, lmbs[i].drc_index); 684 + 685 + lmbs[i].reserved = 0; 686 + } 687 + } 688 + 689 + return rc; 690 + } 691 + 604 692 #else 605 693 static inline int pseries_remove_memblock(unsigned long base, 606 694 unsigned int memblock_size) ··· 716 628 { 717 629 return -EOPNOTSUPP; 718 630 } 631 + static int dlpar_memory_readd_by_index(u32 drc_index, struct property *prop) 632 + { 633 + return -EOPNOTSUPP; 634 + } 719 635 636 + static int dlpar_memory_remove_by_ic(u32 lmbs_to_remove, u32 drc_index, 637 + struct property *prop) 638 + { 639 + return -EOPNOTSUPP; 640 + } 720 641 #endif /* CONFIG_MEMORY_HOTREMOVE */ 642 + 643 + static int dlpar_online_lmb(struct of_drconf_cell *lmb) 644 + { 645 + struct memory_block *mem_block; 646 + int rc; 647 + 648 + mem_block = lmb_to_memblock(lmb); 649 + if (!mem_block) 650 + return -EINVAL; 651 + 652 + rc = device_online(&mem_block->dev); 653 + put_device(&mem_block->dev); 654 + return rc; 655 + } 721 656 722 657 static int dlpar_add_lmb(struct of_drconf_cell *lmb) 723 658 { ··· 765 654 766 655 /* Add the memory */ 767 656 rc = add_memory(nid, lmb->base_addr, block_sz); 768 - if (rc) 657 + if (rc) { 769 658 dlpar_remove_device_tree_lmb(lmb); 770 - else 659 + return rc; 660 + } 661 + 662 + rc = dlpar_online_lmb(lmb); 663 + if (rc) { 664 + remove_memory(nid, lmb->base_addr, block_sz); 665 + dlpar_remove_device_tree_lmb(lmb); 666 + } else { 771 667 lmb->flags |= DRCONF_MEM_ASSIGNED; 668 + } 772 669 773 670 return rc; 774 671 } ··· 895 776 return rc; 896 777 } 897 778 779 + static int dlpar_memory_add_by_ic(u32 lmbs_to_add, u32 drc_index, 780 + struct property *prop) 781 + { 782 + struct of_drconf_cell *lmbs; 783 + u32 num_lmbs, *p; 784 + int i, rc, start_lmb_found; 785 + int lmbs_available = 0, start_index = 0, end_index; 786 + 787 + pr_info("Attempting to hot-add %u LMB(s) at index %x\n", 788 + lmbs_to_add, drc_index); 789 + 790 + if (lmbs_to_add == 0) 791 + return -EINVAL; 792 + 793 + p = prop->value; 794 + num_lmbs = *p++; 795 + lmbs = (struct of_drconf_cell *)p; 796 + start_lmb_found = 0; 797 + 798 + /* Navigate to drc_index */ 799 + while (start_index < num_lmbs) { 800 + if (lmbs[start_index].drc_index == drc_index) { 801 + start_lmb_found = 1; 802 + break; 803 + } 804 + 805 + start_index++; 806 + } 807 + 808 + if (!start_lmb_found) 809 + return -EINVAL; 810 + 811 + end_index = start_index + lmbs_to_add; 812 + 813 + /* Validate that the LMBs in this range are not reserved */ 814 + for (i = start_index; i < end_index; i++) { 815 + if (lmbs[i].flags & DRCONF_MEM_RESERVED) 816 + break; 817 + 818 + lmbs_available++; 819 + } 820 + 821 + if (lmbs_available < lmbs_to_add) 822 + return -EINVAL; 823 + 824 + for (i = start_index; i < end_index; i++) { 825 + if (lmbs[i].flags & DRCONF_MEM_ASSIGNED) 826 + continue; 827 + 828 + rc = dlpar_acquire_drc(lmbs[i].drc_index); 829 + if (rc) 830 + break; 831 + 832 + rc = dlpar_add_lmb(&lmbs[i]); 833 + if (rc) { 834 + dlpar_release_drc(lmbs[i].drc_index); 835 + break; 836 + } 837 + 838 + lmbs[i].reserved = 1; 839 + } 840 + 841 + if (rc) { 842 + pr_err("Memory indexed-count-add failed, removing any added LMBs\n"); 843 + 844 + for (i = start_index; i < end_index; i++) { 845 + if (!lmbs[i].reserved) 846 + continue; 847 + 848 + rc = dlpar_remove_lmb(&lmbs[i]); 849 + if (rc) 850 + pr_err("Failed to remove LMB, drc index %x\n", 851 + be32_to_cpu(lmbs[i].drc_index)); 852 + else 853 + dlpar_release_drc(lmbs[i].drc_index); 854 + } 855 + rc = -EINVAL; 856 + } else { 857 + for (i = start_index; i < end_index; i++) { 858 + if (!lmbs[i].reserved) 859 + continue; 860 + 861 + pr_info("Memory at %llx (drc index %x) was hot-added\n", 862 + lmbs[i].base_addr, lmbs[i].drc_index); 863 + lmbs[i].reserved = 0; 864 + } 865 + } 866 + 867 + return rc; 868 + } 869 + 898 870 int dlpar_memory(struct pseries_hp_errorlog *hp_elog) 899 871 { 900 872 struct device_node *dn; 901 873 struct property *prop; 902 874 u32 count, drc_index; 903 875 int rc; 904 - 905 - count = hp_elog->_drc_u.drc_count; 906 - drc_index = hp_elog->_drc_u.drc_index; 907 876 908 877 lock_device_hotplug(); 909 878 ··· 1009 802 1010 803 switch (hp_elog->action) { 1011 804 case PSERIES_HP_ELOG_ACTION_ADD: 1012 - if (hp_elog->id_type == PSERIES_HP_ELOG_ID_DRC_COUNT) 805 + if (hp_elog->id_type == PSERIES_HP_ELOG_ID_DRC_COUNT) { 806 + count = hp_elog->_drc_u.drc_count; 1013 807 rc = dlpar_memory_add_by_count(count, prop); 1014 - else if (hp_elog->id_type == PSERIES_HP_ELOG_ID_DRC_INDEX) 808 + } else if (hp_elog->id_type == PSERIES_HP_ELOG_ID_DRC_INDEX) { 809 + drc_index = hp_elog->_drc_u.drc_index; 1015 810 rc = dlpar_memory_add_by_index(drc_index, prop); 1016 - else 811 + } else if (hp_elog->id_type == PSERIES_HP_ELOG_ID_DRC_IC) { 812 + count = hp_elog->_drc_u.ic.count; 813 + drc_index = hp_elog->_drc_u.ic.index; 814 + rc = dlpar_memory_add_by_ic(count, drc_index, prop); 815 + } else { 1017 816 rc = -EINVAL; 817 + } 818 + 1018 819 break; 1019 820 case PSERIES_HP_ELOG_ACTION_REMOVE: 1020 - if (hp_elog->id_type == PSERIES_HP_ELOG_ID_DRC_COUNT) 821 + if (hp_elog->id_type == PSERIES_HP_ELOG_ID_DRC_COUNT) { 822 + count = hp_elog->_drc_u.drc_count; 1021 823 rc = dlpar_memory_remove_by_count(count, prop); 1022 - else if (hp_elog->id_type == PSERIES_HP_ELOG_ID_DRC_INDEX) 824 + } else if (hp_elog->id_type == PSERIES_HP_ELOG_ID_DRC_INDEX) { 825 + drc_index = hp_elog->_drc_u.drc_index; 1023 826 rc = dlpar_memory_remove_by_index(drc_index, prop); 1024 - else 827 + } else if (hp_elog->id_type == PSERIES_HP_ELOG_ID_DRC_IC) { 828 + count = hp_elog->_drc_u.ic.count; 829 + drc_index = hp_elog->_drc_u.ic.index; 830 + rc = dlpar_memory_remove_by_ic(count, drc_index, prop); 831 + } else { 1025 832 rc = -EINVAL; 833 + } 834 + 1026 835 break; 1027 836 case PSERIES_HP_ELOG_ACTION_READD: 837 + drc_index = hp_elog->_drc_u.drc_index; 1028 838 rc = dlpar_memory_readd_by_index(drc_index, prop); 1029 839 break; 1030 840 default:
+182 -78
arch/powerpc/xmon/ppc-dis.c
··· 1 1 /* ppc-dis.c -- Disassemble PowerPC instructions 2 - Copyright 1994, 1995, 2000, 2001, 2002, 2003, 2004, 2005, 2006 3 - Free Software Foundation, Inc. 2 + Copyright (C) 1994-2016 Free Software Foundation, Inc. 4 3 Written by Ian Lance Taylor, Cygnus Support 5 4 6 5 This file is part of GDB, GAS, and the GNU binutils. ··· 25 26 #include "ppc.h" 26 27 #include "dis-asm.h" 27 28 28 - /* Print a PowerPC or POWER instruction. */ 29 + /* This file provides several disassembler functions, all of which use 30 + the disassembler interface defined in dis-asm.h. Several functions 31 + are provided because this file handles disassembly for the PowerPC 32 + in both big and little endian mode and also for the POWER (RS/6000) 33 + chip. */ 29 34 30 - int 31 - print_insn_powerpc (unsigned long insn, unsigned long memaddr) 35 + /* Extract the operand value from the PowerPC or POWER instruction. */ 36 + 37 + static long 38 + operand_value_powerpc (const struct powerpc_operand *operand, 39 + unsigned long insn, ppc_cpu_t dialect) 40 + { 41 + long value; 42 + int invalid; 43 + /* Extract the value from the instruction. */ 44 + if (operand->extract) 45 + value = (*operand->extract) (insn, dialect, &invalid); 46 + else 47 + { 48 + if (operand->shift >= 0) 49 + value = (insn >> operand->shift) & operand->bitm; 50 + else 51 + value = (insn << -operand->shift) & operand->bitm; 52 + if ((operand->flags & PPC_OPERAND_SIGNED) != 0) 53 + { 54 + /* BITM is always some number of zeros followed by some 55 + number of ones, followed by some number of zeros. */ 56 + unsigned long top = operand->bitm; 57 + /* top & -top gives the rightmost 1 bit, so this 58 + fills in any trailing zeros. */ 59 + top |= (top & -top) - 1; 60 + top &= ~(top >> 1); 61 + value = (value ^ top) - top; 62 + } 63 + } 64 + 65 + return value; 66 + } 67 + 68 + /* Determine whether the optional operand(s) should be printed. */ 69 + 70 + static int 71 + skip_optional_operands (const unsigned char *opindex, 72 + unsigned long insn, ppc_cpu_t dialect) 73 + { 74 + const struct powerpc_operand *operand; 75 + 76 + for (; *opindex != 0; opindex++) 77 + { 78 + operand = &powerpc_operands[*opindex]; 79 + if ((operand->flags & PPC_OPERAND_NEXT) != 0 80 + || ((operand->flags & PPC_OPERAND_OPTIONAL) != 0 81 + && operand_value_powerpc (operand, insn, dialect) != 82 + ppc_optional_operand_value (operand))) 83 + return 0; 84 + } 85 + 86 + return 1; 87 + } 88 + 89 + /* Find a match for INSN in the opcode table, given machine DIALECT. 90 + A DIALECT of -1 is special, matching all machine opcode variations. */ 91 + 92 + static const struct powerpc_opcode * 93 + lookup_powerpc (unsigned long insn, ppc_cpu_t dialect) 32 94 { 33 95 const struct powerpc_opcode *opcode; 34 96 const struct powerpc_opcode *opcode_end; 35 97 unsigned long op; 36 - int dialect; 37 - 38 - dialect = PPC_OPCODE_PPC | PPC_OPCODE_CLASSIC | PPC_OPCODE_COMMON 39 - | PPC_OPCODE_64 | PPC_OPCODE_POWER4 | PPC_OPCODE_ALTIVEC; 40 - 41 - if (cpu_has_feature(CPU_FTRS_POWER5)) 42 - dialect |= PPC_OPCODE_POWER5; 43 - 44 - if (cpu_has_feature(CPU_FTRS_CELL)) 45 - dialect |= PPC_OPCODE_CELL | PPC_OPCODE_ALTIVEC; 46 - 47 - if (cpu_has_feature(CPU_FTRS_POWER6)) 48 - dialect |= PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_ALTIVEC; 49 98 50 99 /* Get the major opcode of the instruction. */ 51 100 op = PPC_OP (insn); 52 101 53 - /* Find the first match in the opcode table. We could speed this up 54 - a bit by doing a binary search on the major opcode. */ 55 102 opcode_end = powerpc_opcodes + powerpc_num_opcodes; 56 - again: 57 - for (opcode = powerpc_opcodes; opcode < opcode_end; opcode++) 103 + /* Find the first match in the opcode table for this major opcode. */ 104 + for (opcode = powerpc_opcodes; opcode < opcode_end; ++opcode) 58 105 { 59 - unsigned long table_op; 60 106 const unsigned char *opindex; 61 107 const struct powerpc_operand *operand; 62 108 int invalid; 63 - int need_comma; 64 - int need_paren; 65 - 66 - table_op = PPC_OP (opcode->opcode); 67 - if (op < table_op) 68 - break; 69 - if (op > table_op) 70 - continue; 71 109 72 110 if ((insn & opcode->mask) != opcode->opcode 73 - || (opcode->flags & dialect) == 0) 111 + || (dialect != (ppc_cpu_t) -1 112 + && ((opcode->flags & dialect) == 0 113 + || (opcode->deprecated & dialect) != 0))) 74 114 continue; 75 115 76 - /* Make two passes over the operands. First see if any of them 77 - have extraction functions, and, if they do, make sure the 78 - instruction is valid. */ 116 + /* Check validity of operands. */ 79 117 invalid = 0; 80 118 for (opindex = opcode->operands; *opindex != 0; opindex++) 81 119 { ··· 123 87 if (invalid) 124 88 continue; 125 89 126 - /* The instruction is valid. */ 127 - printf("%s", opcode->name); 90 + return opcode; 91 + } 92 + 93 + return NULL; 94 + } 95 + 96 + /* Print a PowerPC or POWER instruction. */ 97 + 98 + int print_insn_powerpc (unsigned long insn, unsigned long memaddr) 99 + { 100 + const struct powerpc_opcode *opcode; 101 + bool insn_is_short; 102 + ppc_cpu_t dialect; 103 + 104 + dialect = PPC_OPCODE_PPC | PPC_OPCODE_COMMON 105 + | PPC_OPCODE_64 | PPC_OPCODE_POWER4 | PPC_OPCODE_ALTIVEC; 106 + 107 + if (cpu_has_feature(CPU_FTRS_POWER5)) 108 + dialect |= PPC_OPCODE_POWER5; 109 + 110 + if (cpu_has_feature(CPU_FTRS_CELL)) 111 + dialect |= (PPC_OPCODE_CELL | PPC_OPCODE_ALTIVEC); 112 + 113 + if (cpu_has_feature(CPU_FTRS_POWER6)) 114 + dialect |= (PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_ALTIVEC); 115 + 116 + if (cpu_has_feature(CPU_FTRS_POWER7)) 117 + dialect |= (PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7 118 + | PPC_OPCODE_ALTIVEC | PPC_OPCODE_VSX); 119 + 120 + if (cpu_has_feature(CPU_FTRS_POWER8)) 121 + dialect |= (PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7 122 + | PPC_OPCODE_POWER8 | PPC_OPCODE_HTM 123 + | PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2 | PPC_OPCODE_VSX); 124 + 125 + if (cpu_has_feature(CPU_FTRS_POWER9)) 126 + dialect |= (PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 | PPC_OPCODE_POWER7 127 + | PPC_OPCODE_POWER8 | PPC_OPCODE_POWER9 | PPC_OPCODE_HTM 128 + | PPC_OPCODE_ALTIVEC | PPC_OPCODE_ALTIVEC2 129 + | PPC_OPCODE_VSX | PPC_OPCODE_VSX3), 130 + 131 + /* Get the major opcode of the insn. */ 132 + opcode = NULL; 133 + insn_is_short = false; 134 + 135 + if (opcode == NULL) 136 + opcode = lookup_powerpc (insn, dialect); 137 + if (opcode == NULL && (dialect & PPC_OPCODE_ANY) != 0) 138 + opcode = lookup_powerpc (insn, (ppc_cpu_t) -1); 139 + 140 + if (opcode != NULL) 141 + { 142 + const unsigned char *opindex; 143 + const struct powerpc_operand *operand; 144 + int need_comma; 145 + int need_paren; 146 + int skip_optional; 147 + 128 148 if (opcode->operands[0] != 0) 129 - printf("\t"); 149 + printf("%-7s ", opcode->name); 150 + else 151 + printf("%s", opcode->name); 152 + 153 + if (insn_is_short) 154 + /* The operands will be fetched out of the 16-bit instruction. */ 155 + insn >>= 16; 130 156 131 157 /* Now extract and print the operands. */ 132 158 need_comma = 0; 133 159 need_paren = 0; 160 + skip_optional = -1; 134 161 for (opindex = opcode->operands; *opindex != 0; opindex++) 135 162 { 136 163 long value; ··· 206 107 if ((operand->flags & PPC_OPERAND_FAKE) != 0) 207 108 continue; 208 109 209 - /* Extract the value from the instruction. */ 210 - if (operand->extract) 211 - value = (*operand->extract) (insn, dialect, &invalid); 212 - else 110 + /* If all of the optional operands have the value zero, 111 + then don't print any of them. */ 112 + if ((operand->flags & PPC_OPERAND_OPTIONAL) != 0) 213 113 { 214 - value = (insn >> operand->shift) & ((1 << operand->bits) - 1); 215 - if ((operand->flags & PPC_OPERAND_SIGNED) != 0 216 - && (value & (1 << (operand->bits - 1))) != 0) 217 - value -= 1 << operand->bits; 114 + if (skip_optional < 0) 115 + skip_optional = skip_optional_operands (opindex, insn, 116 + dialect); 117 + if (skip_optional) 118 + continue; 218 119 } 219 120 220 - /* If the operand is optional, and the value is zero, don't 221 - print anything. */ 222 - if ((operand->flags & PPC_OPERAND_OPTIONAL) != 0 223 - && (operand->flags & PPC_OPERAND_NEXT) == 0 224 - && value == 0) 225 - continue; 121 + value = operand_value_powerpc (operand, insn, dialect); 226 122 227 123 if (need_comma) 228 124 { ··· 233 139 printf("f%ld", value); 234 140 else if ((operand->flags & PPC_OPERAND_VR) != 0) 235 141 printf("v%ld", value); 142 + else if ((operand->flags & PPC_OPERAND_VSR) != 0) 143 + printf("vs%ld", value); 236 144 else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0) 237 - print_address (memaddr + value); 145 + print_address(memaddr + value); 238 146 else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0) 239 - print_address (value & 0xffffffff); 240 - else if ((operand->flags & PPC_OPERAND_CR) == 0 241 - || (dialect & PPC_OPCODE_PPC) == 0) 147 + print_address(value & 0xffffffff); 148 + else if ((operand->flags & PPC_OPERAND_FSL) != 0) 149 + printf("fsl%ld", value); 150 + else if ((operand->flags & PPC_OPERAND_FCR) != 0) 151 + printf("fcr%ld", value); 152 + else if ((operand->flags & PPC_OPERAND_UDI) != 0) 242 153 printf("%ld", value); 243 - else 154 + else if ((operand->flags & PPC_OPERAND_CR_REG) != 0 155 + && (((dialect & PPC_OPCODE_PPC) != 0) 156 + || ((dialect & PPC_OPCODE_VLE) != 0))) 157 + printf("cr%ld", value); 158 + else if (((operand->flags & PPC_OPERAND_CR_BIT) != 0) 159 + && (((dialect & PPC_OPCODE_PPC) != 0) 160 + || ((dialect & PPC_OPCODE_VLE) != 0))) 244 161 { 245 - if (operand->bits == 3) 246 - printf("cr%ld", value); 247 - else 248 - { 249 - static const char *cbnames[4] = { "lt", "gt", "eq", "so" }; 250 - int cr; 251 - int cc; 162 + static const char *cbnames[4] = { "lt", "gt", "eq", "so" }; 163 + int cr; 164 + int cc; 252 165 253 - cr = value >> 2; 254 - if (cr != 0) 255 - printf("4*cr%d+", cr); 256 - cc = value & 3; 257 - printf("%s", cbnames[cc]); 258 - } 166 + cr = value >> 2; 167 + if (cr != 0) 168 + printf("4*cr%d+", cr); 169 + cc = value & 3; 170 + printf("%s", cbnames[cc]); 259 171 } 172 + else 173 + printf("%d", (int) value); 260 174 261 175 if (need_paren) 262 176 { ··· 281 179 } 282 180 } 283 181 284 - /* We have found and printed an instruction; return. */ 285 - return 4; 286 - } 287 - 288 - if ((dialect & PPC_OPCODE_ANY) != 0) 289 - { 290 - dialect = ~PPC_OPCODE_ANY; 291 - goto again; 182 + /* We have found and printed an instruction. 183 + If it was a short VLE instruction we have more to do. */ 184 + if (insn_is_short) 185 + { 186 + memaddr += 2; 187 + return 2; 188 + } 189 + else 190 + /* Otherwise, return. */ 191 + return 4; 292 192 } 293 193 294 194 /* We could not find a match. */
+5940 -3641
arch/powerpc/xmon/ppc-opc.c
··· 1 1 /* ppc-opc.c -- PowerPC opcode list 2 - Copyright 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 3 - 2005 Free Software Foundation, Inc. 2 + Copyright (C) 1994-2016 Free Software Foundation, Inc. 4 3 Written by Ian Lance Taylor, Cygnus Support 5 4 6 5 This file is part of GDB, GAS, and the GNU binutils. ··· 41 42 42 43 /* Local insertion and extraction functions. */ 43 44 44 - static unsigned long insert_bat (unsigned long, long, int, const char **); 45 - static long extract_bat (unsigned long, int, int *); 46 - static unsigned long insert_bba (unsigned long, long, int, const char **); 47 - static long extract_bba (unsigned long, int, int *); 48 - static unsigned long insert_bd (unsigned long, long, int, const char **); 49 - static long extract_bd (unsigned long, int, int *); 50 - static unsigned long insert_bdm (unsigned long, long, int, const char **); 51 - static long extract_bdm (unsigned long, int, int *); 52 - static unsigned long insert_bdp (unsigned long, long, int, const char **); 53 - static long extract_bdp (unsigned long, int, int *); 54 - static unsigned long insert_bo (unsigned long, long, int, const char **); 55 - static long extract_bo (unsigned long, int, int *); 56 - static unsigned long insert_boe (unsigned long, long, int, const char **); 57 - static long extract_boe (unsigned long, int, int *); 58 - static unsigned long insert_dq (unsigned long, long, int, const char **); 59 - static long extract_dq (unsigned long, int, int *); 60 - static unsigned long insert_ds (unsigned long, long, int, const char **); 61 - static long extract_ds (unsigned long, int, int *); 62 - static unsigned long insert_de (unsigned long, long, int, const char **); 63 - static long extract_de (unsigned long, int, int *); 64 - static unsigned long insert_des (unsigned long, long, int, const char **); 65 - static long extract_des (unsigned long, int, int *); 66 - static unsigned long insert_fxm (unsigned long, long, int, const char **); 67 - static long extract_fxm (unsigned long, int, int *); 68 - static unsigned long insert_li (unsigned long, long, int, const char **); 69 - static long extract_li (unsigned long, int, int *); 70 - static unsigned long insert_mbe (unsigned long, long, int, const char **); 71 - static long extract_mbe (unsigned long, int, int *); 72 - static unsigned long insert_mb6 (unsigned long, long, int, const char **); 73 - static long extract_mb6 (unsigned long, int, int *); 74 - static unsigned long insert_nb (unsigned long, long, int, const char **); 75 - static long extract_nb (unsigned long, int, int *); 76 - static unsigned long insert_nsi (unsigned long, long, int, const char **); 77 - static long extract_nsi (unsigned long, int, int *); 78 - static unsigned long insert_ral (unsigned long, long, int, const char **); 79 - static unsigned long insert_ram (unsigned long, long, int, const char **); 80 - static unsigned long insert_raq (unsigned long, long, int, const char **); 81 - static unsigned long insert_ras (unsigned long, long, int, const char **); 82 - static unsigned long insert_rbs (unsigned long, long, int, const char **); 83 - static long extract_rbs (unsigned long, int, int *); 84 - static unsigned long insert_rsq (unsigned long, long, int, const char **); 85 - static unsigned long insert_rtq (unsigned long, long, int, const char **); 86 - static unsigned long insert_sh6 (unsigned long, long, int, const char **); 87 - static long extract_sh6 (unsigned long, int, int *); 88 - static unsigned long insert_spr (unsigned long, long, int, const char **); 89 - static long extract_spr (unsigned long, int, int *); 90 - static unsigned long insert_sprg (unsigned long, long, int, const char **); 91 - static long extract_sprg (unsigned long, int, int *); 92 - static unsigned long insert_tbr (unsigned long, long, int, const char **); 93 - static long extract_tbr (unsigned long, int, int *); 94 - static unsigned long insert_ev2 (unsigned long, long, int, const char **); 95 - static long extract_ev2 (unsigned long, int, int *); 96 - static unsigned long insert_ev4 (unsigned long, long, int, const char **); 97 - static long extract_ev4 (unsigned long, int, int *); 98 - static unsigned long insert_ev8 (unsigned long, long, int, const char **); 99 - static long extract_ev8 (unsigned long, int, int *); 45 + static unsigned long insert_arx (unsigned long, long, ppc_cpu_t, const char **); 46 + static long extract_arx (unsigned long, ppc_cpu_t, int *); 47 + static unsigned long insert_ary (unsigned long, long, ppc_cpu_t, const char **); 48 + static long extract_ary (unsigned long, ppc_cpu_t, int *); 49 + static unsigned long insert_bat (unsigned long, long, ppc_cpu_t, const char **); 50 + static long extract_bat (unsigned long, ppc_cpu_t, int *); 51 + static unsigned long insert_bba (unsigned long, long, ppc_cpu_t, const char **); 52 + static long extract_bba (unsigned long, ppc_cpu_t, int *); 53 + static unsigned long insert_bdm (unsigned long, long, ppc_cpu_t, const char **); 54 + static long extract_bdm (unsigned long, ppc_cpu_t, int *); 55 + static unsigned long insert_bdp (unsigned long, long, ppc_cpu_t, const char **); 56 + static long extract_bdp (unsigned long, ppc_cpu_t, int *); 57 + static unsigned long insert_bo (unsigned long, long, ppc_cpu_t, const char **); 58 + static long extract_bo (unsigned long, ppc_cpu_t, int *); 59 + static unsigned long insert_boe (unsigned long, long, ppc_cpu_t, const char **); 60 + static long extract_boe (unsigned long, ppc_cpu_t, int *); 61 + static unsigned long insert_esync (unsigned long, long, ppc_cpu_t, const char **); 62 + static unsigned long insert_dcmxs (unsigned long, long, ppc_cpu_t, const char **); 63 + static long extract_dcmxs (unsigned long, ppc_cpu_t, int *); 64 + static unsigned long insert_dxd (unsigned long, long, ppc_cpu_t, const char **); 65 + static long extract_dxd (unsigned long, ppc_cpu_t, int *); 66 + static unsigned long insert_dxdn (unsigned long, long, ppc_cpu_t, const char **); 67 + static long extract_dxdn (unsigned long, ppc_cpu_t, int *); 68 + static unsigned long insert_fxm (unsigned long, long, ppc_cpu_t, const char **); 69 + static long extract_fxm (unsigned long, ppc_cpu_t, int *); 70 + static unsigned long insert_li20 (unsigned long, long, ppc_cpu_t, const char **); 71 + static long extract_li20 (unsigned long, ppc_cpu_t, int *); 72 + static unsigned long insert_ls (unsigned long, long, ppc_cpu_t, const char **); 73 + static unsigned long insert_mbe (unsigned long, long, ppc_cpu_t, const char **); 74 + static long extract_mbe (unsigned long, ppc_cpu_t, int *); 75 + static unsigned long insert_mb6 (unsigned long, long, ppc_cpu_t, const char **); 76 + static long extract_mb6 (unsigned long, ppc_cpu_t, int *); 77 + static long extract_nb (unsigned long, ppc_cpu_t, int *); 78 + static unsigned long insert_nbi (unsigned long, long, ppc_cpu_t, const char **); 79 + static unsigned long insert_nsi (unsigned long, long, ppc_cpu_t, const char **); 80 + static long extract_nsi (unsigned long, ppc_cpu_t, int *); 81 + static unsigned long insert_oimm (unsigned long, long, ppc_cpu_t, const char **); 82 + static long extract_oimm (unsigned long, ppc_cpu_t, int *); 83 + static unsigned long insert_ral (unsigned long, long, ppc_cpu_t, const char **); 84 + static unsigned long insert_ram (unsigned long, long, ppc_cpu_t, const char **); 85 + static unsigned long insert_raq (unsigned long, long, ppc_cpu_t, const char **); 86 + static unsigned long insert_ras (unsigned long, long, ppc_cpu_t, const char **); 87 + static unsigned long insert_rbs (unsigned long, long, ppc_cpu_t, const char **); 88 + static long extract_rbs (unsigned long, ppc_cpu_t, int *); 89 + static unsigned long insert_rbx (unsigned long, long, ppc_cpu_t, const char **); 90 + static unsigned long insert_rx (unsigned long, long, ppc_cpu_t, const char **); 91 + static long extract_rx (unsigned long, ppc_cpu_t, int *); 92 + static unsigned long insert_ry (unsigned long, long, ppc_cpu_t, const char **); 93 + static long extract_ry (unsigned long, ppc_cpu_t, int *); 94 + static unsigned long insert_sh6 (unsigned long, long, ppc_cpu_t, const char **); 95 + static long extract_sh6 (unsigned long, ppc_cpu_t, int *); 96 + static unsigned long insert_sci8 (unsigned long, long, ppc_cpu_t, const char **); 97 + static long extract_sci8 (unsigned long, ppc_cpu_t, int *); 98 + static unsigned long insert_sci8n (unsigned long, long, ppc_cpu_t, const char **); 99 + static long extract_sci8n (unsigned long, ppc_cpu_t, int *); 100 + static unsigned long insert_sd4h (unsigned long, long, ppc_cpu_t, const char **); 101 + static long extract_sd4h (unsigned long, ppc_cpu_t, int *); 102 + static unsigned long insert_sd4w (unsigned long, long, ppc_cpu_t, const char **); 103 + static long extract_sd4w (unsigned long, ppc_cpu_t, int *); 104 + static unsigned long insert_spr (unsigned long, long, ppc_cpu_t, const char **); 105 + static long extract_spr (unsigned long, ppc_cpu_t, int *); 106 + static unsigned long insert_sprg (unsigned long, long, ppc_cpu_t, const char **); 107 + static long extract_sprg (unsigned long, ppc_cpu_t, int *); 108 + static unsigned long insert_tbr (unsigned long, long, ppc_cpu_t, const char **); 109 + static long extract_tbr (unsigned long, ppc_cpu_t, int *); 110 + static unsigned long insert_xt6 (unsigned long, long, ppc_cpu_t, const char **); 111 + static long extract_xt6 (unsigned long, ppc_cpu_t, int *); 112 + static unsigned long insert_xtq6 (unsigned long, long, ppc_cpu_t, const char **); 113 + static long extract_xtq6 (unsigned long, ppc_cpu_t, int *); 114 + static unsigned long insert_xa6 (unsigned long, long, ppc_cpu_t, const char **); 115 + static long extract_xa6 (unsigned long, ppc_cpu_t, int *); 116 + static unsigned long insert_xb6 (unsigned long, long, ppc_cpu_t, const char **); 117 + static long extract_xb6 (unsigned long, ppc_cpu_t, int *); 118 + static unsigned long insert_xb6s (unsigned long, long, ppc_cpu_t, const char **); 119 + static long extract_xb6s (unsigned long, ppc_cpu_t, int *); 120 + static unsigned long insert_xc6 (unsigned long, long, ppc_cpu_t, const char **); 121 + static long extract_xc6 (unsigned long, ppc_cpu_t, int *); 122 + static unsigned long insert_dm (unsigned long, long, ppc_cpu_t, const char **); 123 + static long extract_dm (unsigned long, ppc_cpu_t, int *); 124 + static unsigned long insert_vlesi (unsigned long, long, ppc_cpu_t, const char **); 125 + static long extract_vlesi (unsigned long, ppc_cpu_t, int *); 126 + static unsigned long insert_vlensi (unsigned long, long, ppc_cpu_t, const char **); 127 + static long extract_vlensi (unsigned long, ppc_cpu_t, int *); 128 + static unsigned long insert_vleui (unsigned long, long, ppc_cpu_t, const char **); 129 + static long extract_vleui (unsigned long, ppc_cpu_t, int *); 130 + static unsigned long insert_vleil (unsigned long, long, ppc_cpu_t, const char **); 131 + static long extract_vleil (unsigned long, ppc_cpu_t, int *); 100 132 101 133 /* The operands table. 102 134 103 - The fields are bits, shift, insert, extract, flags. 135 + The fields are bitm, shift, insert, extract, flags. 104 136 105 137 We used to put parens around the various additions, like the one 106 138 for BA just below. However, that caused trouble with feeble ··· 149 119 150 120 /* The BA field in an XL form instruction. */ 151 121 #define BA UNUSED + 1 152 - #define BA_MASK (0x1f << 16) 153 - { 5, 16, NULL, NULL, PPC_OPERAND_CR }, 122 + /* The BI field in a B form or XL form instruction. */ 123 + #define BI BA 124 + #define BI_MASK (0x1f << 16) 125 + { 0x1f, 16, NULL, NULL, PPC_OPERAND_CR_BIT }, 154 126 155 127 /* The BA field in an XL form instruction when it must be the same 156 128 as the BT field in the same instruction. */ 157 129 #define BAT BA + 1 158 - { 5, 16, insert_bat, extract_bat, PPC_OPERAND_FAKE }, 130 + { 0x1f, 16, insert_bat, extract_bat, PPC_OPERAND_FAKE }, 159 131 160 132 /* The BB field in an XL form instruction. */ 161 133 #define BB BAT + 1 162 134 #define BB_MASK (0x1f << 11) 163 - { 5, 11, NULL, NULL, PPC_OPERAND_CR }, 135 + { 0x1f, 11, NULL, NULL, PPC_OPERAND_CR_BIT }, 164 136 165 137 /* The BB field in an XL form instruction when it must be the same 166 138 as the BA field in the same instruction. */ 167 139 #define BBA BB + 1 168 - { 5, 11, insert_bba, extract_bba, PPC_OPERAND_FAKE }, 140 + /* The VB field in a VX form instruction when it must be the same 141 + as the VA field in the same instruction. */ 142 + #define VBA BBA 143 + { 0x1f, 11, insert_bba, extract_bba, PPC_OPERAND_FAKE }, 169 144 170 145 /* The BD field in a B form instruction. The lower two bits are 171 146 forced to zero. */ 172 147 #define BD BBA + 1 173 - { 16, 0, insert_bd, extract_bd, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, 148 + { 0xfffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, 174 149 175 150 /* The BD field in a B form instruction when absolute addressing is 176 151 used. */ 177 152 #define BDA BD + 1 178 - { 16, 0, insert_bd, extract_bd, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED }, 153 + { 0xfffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED }, 179 154 180 155 /* The BD field in a B form instruction when the - modifier is used. 181 156 This sets the y bit of the BO field appropriately. */ 182 157 #define BDM BDA + 1 183 - { 16, 0, insert_bdm, extract_bdm, 184 - PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, 158 + { 0xfffc, 0, insert_bdm, extract_bdm, 159 + PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, 185 160 186 161 /* The BD field in a B form instruction when the - modifier is used 187 162 and absolute address is used. */ 188 163 #define BDMA BDM + 1 189 - { 16, 0, insert_bdm, extract_bdm, 190 - PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED }, 164 + { 0xfffc, 0, insert_bdm, extract_bdm, 165 + PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED }, 191 166 192 167 /* The BD field in a B form instruction when the + modifier is used. 193 168 This sets the y bit of the BO field appropriately. */ 194 169 #define BDP BDMA + 1 195 - { 16, 0, insert_bdp, extract_bdp, 196 - PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, 170 + { 0xfffc, 0, insert_bdp, extract_bdp, 171 + PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, 197 172 198 173 /* The BD field in a B form instruction when the + modifier is used 199 174 and absolute addressing is used. */ 200 175 #define BDPA BDP + 1 201 - { 16, 0, insert_bdp, extract_bdp, 202 - PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED }, 176 + { 0xfffc, 0, insert_bdp, extract_bdp, 177 + PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED }, 203 178 204 179 /* The BF field in an X or XL form instruction. */ 205 180 #define BF BDPA + 1 206 - { 3, 23, NULL, NULL, PPC_OPERAND_CR }, 181 + /* The CRFD field in an X form instruction. */ 182 + #define CRFD BF 183 + /* The CRD field in an XL form instruction. */ 184 + #define CRD BF 185 + { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG }, 186 + 187 + /* The BF field in an X or XL form instruction. */ 188 + #define BFF BF + 1 189 + { 0x7, 23, NULL, NULL, 0 }, 207 190 208 191 /* An optional BF field. This is used for comparison instructions, 209 192 in which an omitted BF field is taken as zero. */ 210 - #define OBF BF + 1 211 - { 3, 23, NULL, NULL, PPC_OPERAND_CR | PPC_OPERAND_OPTIONAL }, 193 + #define OBF BFF + 1 194 + { 0x7, 23, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL }, 212 195 213 196 /* The BFA field in an X or XL form instruction. */ 214 197 #define BFA OBF + 1 215 - { 3, 18, NULL, NULL, PPC_OPERAND_CR }, 216 - 217 - /* The BI field in a B form or XL form instruction. */ 218 - #define BI BFA + 1 219 - #define BI_MASK (0x1f << 16) 220 - { 5, 16, NULL, NULL, PPC_OPERAND_CR }, 198 + { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG }, 221 199 222 200 /* The BO field in a B form instruction. Certain values are 223 201 illegal. */ 224 - #define BO BI + 1 202 + #define BO BFA + 1 225 203 #define BO_MASK (0x1f << 21) 226 - { 5, 21, insert_bo, extract_bo, 0 }, 204 + { 0x1f, 21, insert_bo, extract_bo, 0 }, 227 205 228 206 /* The BO field in a B form instruction when the + or - modifier is 229 207 used. This is like the BO field, but it must be even. */ 230 208 #define BOE BO + 1 231 - { 5, 21, insert_boe, extract_boe, 0 }, 209 + { 0x1e, 21, insert_boe, extract_boe, 0 }, 232 210 233 - #define BH BOE + 1 234 - { 2, 11, NULL, NULL, PPC_OPERAND_OPTIONAL }, 211 + /* The RM field in an X form instruction. */ 212 + #define RM BOE + 1 213 + { 0x3, 11, NULL, NULL, 0 }, 214 + 215 + #define BH RM + 1 216 + { 0x3, 11, NULL, NULL, PPC_OPERAND_OPTIONAL }, 235 217 236 218 /* The BT field in an X or XL form instruction. */ 237 219 #define BT BH + 1 238 - { 5, 21, NULL, NULL, PPC_OPERAND_CR }, 220 + { 0x1f, 21, NULL, NULL, PPC_OPERAND_CR_BIT }, 221 + 222 + /* The BI16 field in a BD8 form instruction. */ 223 + #define BI16 BT + 1 224 + { 0x3, 8, NULL, NULL, PPC_OPERAND_CR_BIT }, 225 + 226 + /* The BI32 field in a BD15 form instruction. */ 227 + #define BI32 BI16 + 1 228 + { 0xf, 16, NULL, NULL, PPC_OPERAND_CR_BIT }, 229 + 230 + /* The BO32 field in a BD15 form instruction. */ 231 + #define BO32 BI32 + 1 232 + { 0x3, 20, NULL, NULL, 0 }, 233 + 234 + /* The B8 field in a BD8 form instruction. */ 235 + #define B8 BO32 + 1 236 + { 0x1fe, -1, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, 237 + 238 + /* The B15 field in a BD15 form instruction. The lowest bit is 239 + forced to zero. */ 240 + #define B15 B8 + 1 241 + { 0xfffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, 242 + 243 + /* The B24 field in a BD24 form instruction. The lowest bit is 244 + forced to zero. */ 245 + #define B24 B15 + 1 246 + { 0x1fffffe, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, 239 247 240 248 /* The condition register number portion of the BI field in a B form 241 249 or XL form instruction. This is used for the extended 242 250 conditional branch mnemonics, which set the lower two bits of the 243 251 BI field. This field is optional. */ 244 - #define CR BT + 1 245 - { 3, 18, NULL, NULL, PPC_OPERAND_CR | PPC_OPERAND_OPTIONAL }, 252 + #define CR B24 + 1 253 + { 0x7, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL }, 246 254 247 255 /* The CRB field in an X form instruction. */ 248 256 #define CRB CR + 1 249 - { 5, 6, NULL, NULL, 0 }, 257 + /* The MB field in an M form instruction. */ 258 + #define MB CRB 259 + #define MB_MASK (0x1f << 6) 260 + { 0x1f, 6, NULL, NULL, 0 }, 250 261 251 - /* The CRFD field in an X form instruction. */ 252 - #define CRFD CRB + 1 253 - { 3, 23, NULL, NULL, PPC_OPERAND_CR }, 262 + /* The CRD32 field in an XL form instruction. */ 263 + #define CRD32 CRB + 1 264 + { 0x3, 21, NULL, NULL, PPC_OPERAND_CR_REG }, 254 265 255 266 /* The CRFS field in an X form instruction. */ 256 - #define CRFS CRFD + 1 257 - { 3, 0, NULL, NULL, PPC_OPERAND_CR }, 267 + #define CRFS CRD32 + 1 268 + { 0x7, 0, NULL, NULL, PPC_OPERAND_CR_REG }, 269 + 270 + #define CRS CRFS + 1 271 + { 0x3, 18, NULL, NULL, PPC_OPERAND_CR_REG | PPC_OPERAND_OPTIONAL }, 258 272 259 273 /* The CT field in an X form instruction. */ 260 - #define CT CRFS + 1 261 - { 5, 21, NULL, NULL, PPC_OPERAND_OPTIONAL }, 274 + #define CT CRS + 1 275 + /* The MO field in an mbar instruction. */ 276 + #define MO CT 277 + { 0x1f, 21, NULL, NULL, PPC_OPERAND_OPTIONAL }, 262 278 263 279 /* The D field in a D form instruction. This is a displacement off 264 280 a register, and implies that the next operand is a register in 265 281 parentheses. */ 266 282 #define D CT + 1 267 - { 16, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED }, 283 + { 0xffff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED }, 268 284 269 - /* The DE field in a DE form instruction. This is like D, but is 12 270 - bits only. */ 271 - #define DE D + 1 272 - { 14, 0, insert_de, extract_de, PPC_OPERAND_PARENS }, 285 + /* The D8 field in a D form instruction. This is a displacement off 286 + a register, and implies that the next operand is a register in 287 + parentheses. */ 288 + #define D8 D + 1 289 + { 0xff, 0, NULL, NULL, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED }, 273 290 274 - /* The DES field in a DES form instruction. This is like DS, but is 14 275 - bits only (12 stored.) */ 276 - #define DES DE + 1 277 - { 14, 0, insert_des, extract_des, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED }, 291 + /* The DCMX field in an X form instruction. */ 292 + #define DCMX D8 + 1 293 + { 0x7f, 16, NULL, NULL, 0 }, 294 + 295 + /* The split DCMX field in an X form instruction. */ 296 + #define DCMXS DCMX + 1 297 + { 0x7f, PPC_OPSHIFT_INV, insert_dcmxs, extract_dcmxs, 0 }, 278 298 279 299 /* The DQ field in a DQ form instruction. This is like D, but the 280 300 lower four bits are forced to zero. */ 281 - #define DQ DES + 1 282 - { 16, 0, insert_dq, extract_dq, 283 - PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ }, 301 + #define DQ DCMXS + 1 302 + { 0xfff0, 0, NULL, NULL, 303 + PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DQ }, 284 304 285 305 /* The DS field in a DS form instruction. This is like D, but the 286 306 lower two bits are forced to zero. */ 287 307 #define DS DQ + 1 288 - { 16, 0, insert_ds, extract_ds, 289 - PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS }, 308 + { 0xfffc, 0, NULL, NULL, 309 + PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED | PPC_OPERAND_DS }, 310 + 311 + /* The DUIS or BHRBE fields in a XFX form instruction, 10 bits 312 + unsigned imediate */ 313 + #define DUIS DS + 1 314 + #define BHRBE DUIS 315 + { 0x3ff, 11, NULL, NULL, 0 }, 316 + 317 + /* The split D field in a DX form instruction. */ 318 + #define DXD DUIS + 1 319 + { 0xffff, PPC_OPSHIFT_INV, insert_dxd, extract_dxd, 320 + PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT}, 321 + 322 + /* The split ND field in a DX form instruction. 323 + This is the same as the DX field, only negated. */ 324 + #define NDXD DXD + 1 325 + { 0xffff, PPC_OPSHIFT_INV, insert_dxdn, extract_dxdn, 326 + PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT}, 290 327 291 328 /* The E field in a wrteei instruction. */ 292 - #define E DS + 1 293 - { 1, 15, NULL, NULL, 0 }, 329 + /* And the W bit in the pair singles instructions. */ 330 + /* And the ST field in a VX form instruction. */ 331 + #define E NDXD + 1 332 + #define PSW E 333 + #define ST E 334 + { 0x1, 15, NULL, NULL, 0 }, 294 335 295 336 /* The FL1 field in a POWER SC form instruction. */ 296 337 #define FL1 E + 1 297 - { 4, 12, NULL, NULL, 0 }, 338 + /* The U field in an X form instruction. */ 339 + #define U FL1 340 + { 0xf, 12, NULL, NULL, 0 }, 298 341 299 342 /* The FL2 field in a POWER SC form instruction. */ 300 343 #define FL2 FL1 + 1 301 - { 3, 2, NULL, NULL, 0 }, 344 + { 0x7, 2, NULL, NULL, 0 }, 302 345 303 346 /* The FLM field in an XFL form instruction. */ 304 347 #define FLM FL2 + 1 305 - { 8, 17, NULL, NULL, 0 }, 348 + { 0xff, 17, NULL, NULL, 0 }, 306 349 307 350 /* The FRA field in an X or A form instruction. */ 308 351 #define FRA FLM + 1 309 352 #define FRA_MASK (0x1f << 16) 310 - { 5, 16, NULL, NULL, PPC_OPERAND_FPR }, 353 + { 0x1f, 16, NULL, NULL, PPC_OPERAND_FPR }, 354 + 355 + /* The FRAp field of DFP instructions. */ 356 + #define FRAp FRA + 1 357 + { 0x1e, 16, NULL, NULL, PPC_OPERAND_FPR }, 311 358 312 359 /* The FRB field in an X or A form instruction. */ 313 - #define FRB FRA + 1 360 + #define FRB FRAp + 1 314 361 #define FRB_MASK (0x1f << 11) 315 - { 5, 11, NULL, NULL, PPC_OPERAND_FPR }, 362 + { 0x1f, 11, NULL, NULL, PPC_OPERAND_FPR }, 363 + 364 + /* The FRBp field of DFP instructions. */ 365 + #define FRBp FRB + 1 366 + { 0x1e, 11, NULL, NULL, PPC_OPERAND_FPR }, 316 367 317 368 /* The FRC field in an A form instruction. */ 318 - #define FRC FRB + 1 369 + #define FRC FRBp + 1 319 370 #define FRC_MASK (0x1f << 6) 320 - { 5, 6, NULL, NULL, PPC_OPERAND_FPR }, 371 + { 0x1f, 6, NULL, NULL, PPC_OPERAND_FPR }, 321 372 322 373 /* The FRS field in an X form instruction or the FRT field in a D, X 323 374 or A form instruction. */ 324 375 #define FRS FRC + 1 325 376 #define FRT FRS 326 - { 5, 21, NULL, NULL, PPC_OPERAND_FPR }, 377 + { 0x1f, 21, NULL, NULL, PPC_OPERAND_FPR }, 378 + 379 + /* The FRSp field of stfdp or the FRTp field of lfdp and DFP 380 + instructions. */ 381 + #define FRSp FRS + 1 382 + #define FRTp FRSp 383 + { 0x1e, 21, NULL, NULL, PPC_OPERAND_FPR }, 327 384 328 385 /* The FXM field in an XFX instruction. */ 329 - #define FXM FRS + 1 330 - #define FXM_MASK (0xff << 12) 331 - { 8, 12, insert_fxm, extract_fxm, 0 }, 386 + #define FXM FRSp + 1 387 + { 0xff, 12, insert_fxm, extract_fxm, 0 }, 332 388 333 389 /* Power4 version for mfcr. */ 334 390 #define FXM4 FXM + 1 335 - { 8, 12, insert_fxm, extract_fxm, PPC_OPERAND_OPTIONAL }, 391 + { 0xff, 12, insert_fxm, extract_fxm, 392 + PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE}, 393 + /* If the FXM4 operand is ommitted, use the sentinel value -1. */ 394 + { -1, -1, NULL, NULL, 0}, 395 + 396 + /* The IMM20 field in an LI instruction. */ 397 + #define IMM20 FXM4 + 2 398 + { 0xfffff, PPC_OPSHIFT_INV, insert_li20, extract_li20, PPC_OPERAND_SIGNED}, 336 399 337 400 /* The L field in a D or X form instruction. */ 338 - #define L FXM4 + 1 339 - { 1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL }, 401 + #define L IMM20 + 1 402 + { 0x1, 21, NULL, NULL, 0 }, 403 + 404 + /* The optional L field in tlbie and tlbiel instructions. */ 405 + #define LOPT L + 1 406 + /* The R field in a HTM X form instruction. */ 407 + #define HTM_R LOPT 408 + { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL }, 409 + 410 + /* The optional (for 32-bit) L field in cmp[l][i] instructions. */ 411 + #define L32OPT LOPT + 1 412 + { 0x1, 21, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL32 }, 413 + 414 + /* The L field in dcbf instruction. */ 415 + #define L2OPT L32OPT + 1 416 + { 0x3, 21, NULL, NULL, PPC_OPERAND_OPTIONAL }, 340 417 341 418 /* The LEV field in a POWER SVC form instruction. */ 342 - #define SVC_LEV L + 1 343 - { 7, 5, NULL, NULL, 0 }, 419 + #define SVC_LEV L2OPT + 1 420 + { 0x7f, 5, NULL, NULL, 0 }, 344 421 345 422 /* The LEV field in an SC form instruction. */ 346 423 #define LEV SVC_LEV + 1 347 - { 7, 5, NULL, NULL, PPC_OPERAND_OPTIONAL }, 424 + { 0x7f, 5, NULL, NULL, PPC_OPERAND_OPTIONAL }, 348 425 349 426 /* The LI field in an I form instruction. The lower two bits are 350 427 forced to zero. */ 351 428 #define LI LEV + 1 352 - { 26, 0, insert_li, extract_li, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, 429 + { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_RELATIVE | PPC_OPERAND_SIGNED }, 353 430 354 431 /* The LI field in an I form instruction when used as an absolute 355 432 address. */ 356 433 #define LIA LI + 1 357 - { 26, 0, insert_li, extract_li, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED }, 434 + { 0x3fffffc, 0, NULL, NULL, PPC_OPERAND_ABSOLUTE | PPC_OPERAND_SIGNED }, 358 435 359 - /* The LS field in an X (sync) form instruction. */ 436 + /* The LS or WC field in an X (sync or wait) form instruction. */ 360 437 #define LS LIA + 1 361 - { 2, 21, NULL, NULL, PPC_OPERAND_OPTIONAL }, 362 - 363 - /* The MB field in an M form instruction. */ 364 - #define MB LS + 1 365 - #define MB_MASK (0x1f << 6) 366 - { 5, 6, NULL, NULL, 0 }, 438 + #define WC LS 439 + { 0x3, 21, insert_ls, NULL, PPC_OPERAND_OPTIONAL }, 367 440 368 441 /* The ME field in an M form instruction. */ 369 - #define ME MB + 1 442 + #define ME LS + 1 370 443 #define ME_MASK (0x1f << 1) 371 - { 5, 1, NULL, NULL, 0 }, 444 + { 0x1f, 1, NULL, NULL, 0 }, 372 445 373 446 /* The MB and ME fields in an M form instruction expressed a single 374 447 operand which is a bitmask indicating which bits to select. This 375 448 is a two operand form using PPC_OPERAND_NEXT. See the 376 449 description in opcode/ppc.h for what this means. */ 377 450 #define MBE ME + 1 378 - { 5, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT }, 379 - { 32, 0, insert_mbe, extract_mbe, 0 }, 451 + { 0x1f, 6, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_NEXT }, 452 + { -1, 0, insert_mbe, extract_mbe, 0 }, 380 453 381 454 /* The MB or ME field in an MD or MDS form instruction. The high 382 455 bit is wrapped to the low end. */ 383 456 #define MB6 MBE + 2 384 457 #define ME6 MB6 385 458 #define MB6_MASK (0x3f << 5) 386 - { 6, 5, insert_mb6, extract_mb6, 0 }, 387 - 388 - /* The MO field in an mbar instruction. */ 389 - #define MO MB6 + 1 390 - { 5, 21, NULL, NULL, PPC_OPERAND_OPTIONAL }, 459 + { 0x3f, 5, insert_mb6, extract_mb6, 0 }, 391 460 392 461 /* The NB field in an X form instruction. The value 32 is stored as 393 462 0. */ 394 - #define NB MO + 1 395 - { 6, 11, insert_nb, extract_nb, 0 }, 463 + #define NB MB6 + 1 464 + { 0x1f, 11, NULL, extract_nb, PPC_OPERAND_PLUS1 }, 465 + 466 + /* The NBI field in an lswi instruction, which has special value 467 + restrictions. The value 32 is stored as 0. */ 468 + #define NBI NB + 1 469 + { 0x1f, 11, insert_nbi, extract_nb, PPC_OPERAND_PLUS1 }, 396 470 397 471 /* The NSI field in a D form instruction. This is the same as the 398 472 SI field, only negated. */ 399 - #define NSI NB + 1 400 - { 16, 0, insert_nsi, extract_nsi, 401 - PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED }, 473 + #define NSI NBI + 1 474 + { 0xffff, 0, insert_nsi, extract_nsi, 475 + PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED }, 476 + 477 + /* The NSI field in a D form instruction when we accept a wide range 478 + of positive values. */ 479 + #define NSISIGNOPT NSI + 1 480 + { 0xffff, 0, insert_nsi, extract_nsi, 481 + PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT }, 402 482 403 483 /* The RA field in an D, DS, DQ, X, XO, M, or MDS form instruction. */ 404 - #define RA NSI + 1 484 + #define RA NSISIGNOPT + 1 405 485 #define RA_MASK (0x1f << 16) 406 - { 5, 16, NULL, NULL, PPC_OPERAND_GPR }, 486 + { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR }, 407 487 408 488 /* As above, but 0 in the RA field means zero, not r0. */ 409 489 #define RA0 RA + 1 410 - { 5, 16, NULL, NULL, PPC_OPERAND_GPR_0 }, 490 + { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR_0 }, 411 491 412 - /* The RA field in the DQ form lq instruction, which has special 492 + /* The RA field in the DQ form lq or an lswx instruction, which have special 413 493 value restrictions. */ 414 494 #define RAQ RA0 + 1 415 - { 5, 16, insert_raq, NULL, PPC_OPERAND_GPR_0 }, 495 + #define RAX RAQ 496 + { 0x1f, 16, insert_raq, NULL, PPC_OPERAND_GPR_0 }, 416 497 417 498 /* The RA field in a D or X form instruction which is an updating 418 499 load, which means that the RA field may not be zero and may not 419 500 equal the RT field. */ 420 501 #define RAL RAQ + 1 421 - { 5, 16, insert_ral, NULL, PPC_OPERAND_GPR_0 }, 502 + { 0x1f, 16, insert_ral, NULL, PPC_OPERAND_GPR_0 }, 422 503 423 504 /* The RA field in an lmw instruction, which has special value 424 505 restrictions. */ 425 506 #define RAM RAL + 1 426 - { 5, 16, insert_ram, NULL, PPC_OPERAND_GPR_0 }, 507 + { 0x1f, 16, insert_ram, NULL, PPC_OPERAND_GPR_0 }, 427 508 428 509 /* The RA field in a D or X form instruction which is an updating 429 510 store or an updating floating point load, which means that the RA 430 511 field may not be zero. */ 431 512 #define RAS RAM + 1 432 - { 5, 16, insert_ras, NULL, PPC_OPERAND_GPR_0 }, 513 + { 0x1f, 16, insert_ras, NULL, PPC_OPERAND_GPR_0 }, 433 514 434 - /* The RA field of the tlbwe instruction, which is optional. */ 515 + /* The RA field of the tlbwe, dccci and iccci instructions, 516 + which are optional. */ 435 517 #define RAOPT RAS + 1 436 - { 5, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL }, 518 + { 0x1f, 16, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL }, 437 519 438 520 /* The RB field in an X, XO, M, or MDS form instruction. */ 439 521 #define RB RAOPT + 1 440 522 #define RB_MASK (0x1f << 11) 441 - { 5, 11, NULL, NULL, PPC_OPERAND_GPR }, 523 + { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR }, 442 524 443 525 /* The RB field in an X form instruction when it must be the same as 444 526 the RS field in the instruction. This is used for extended 445 527 mnemonics like mr. */ 446 528 #define RBS RB + 1 447 - { 5, 1, insert_rbs, extract_rbs, PPC_OPERAND_FAKE }, 529 + { 0x1f, 11, insert_rbs, extract_rbs, PPC_OPERAND_FAKE }, 530 + 531 + /* The RB field in an lswx instruction, which has special value 532 + restrictions. */ 533 + #define RBX RBS + 1 534 + { 0x1f, 11, insert_rbx, NULL, PPC_OPERAND_GPR }, 535 + 536 + /* The RB field of the dccci and iccci instructions, which are optional. */ 537 + #define RBOPT RBX + 1 538 + { 0x1f, 11, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL }, 539 + 540 + /* The RC register field in an maddld, maddhd or maddhdu instruction. */ 541 + #define RC RBOPT + 1 542 + { 0x1f, 6, NULL, NULL, PPC_OPERAND_GPR }, 448 543 449 544 /* The RS field in a D, DS, X, XFX, XS, M, MD or MDS form 450 545 instruction or the RT field in a D, DS, X, XFX or XO form 451 546 instruction. */ 452 - #define RS RBS + 1 547 + #define RS RC + 1 453 548 #define RT RS 454 549 #define RT_MASK (0x1f << 21) 455 - { 5, 21, NULL, NULL, PPC_OPERAND_GPR }, 550 + #define RD RS 551 + { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR }, 456 552 457 - /* The RS field of the DS form stq instruction, which has special 458 - value restrictions. */ 553 + /* The RS and RT fields of the DS form stq and DQ form lq instructions, 554 + which have special value restrictions. */ 459 555 #define RSQ RS + 1 460 - { 5, 21, insert_rsq, NULL, PPC_OPERAND_GPR_0 }, 461 - 462 - /* The RT field of the DQ form lq instruction, which has special 463 - value restrictions. */ 464 - #define RTQ RSQ + 1 465 - { 5, 21, insert_rtq, NULL, PPC_OPERAND_GPR_0 }, 556 + #define RTQ RSQ 557 + { 0x1e, 21, NULL, NULL, PPC_OPERAND_GPR }, 466 558 467 559 /* The RS field of the tlbwe instruction, which is optional. */ 468 - #define RSO RTQ + 1 560 + #define RSO RSQ + 1 469 561 #define RTO RSO 470 - { 5, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL }, 562 + { 0x1f, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL }, 563 + 564 + /* The RX field of the SE_RR form instruction. */ 565 + #define RX RSO + 1 566 + { 0x1f, PPC_OPSHIFT_INV, insert_rx, extract_rx, PPC_OPERAND_GPR }, 567 + 568 + /* The ARX field of the SE_RR form instruction. */ 569 + #define ARX RX + 1 570 + { 0x1f, PPC_OPSHIFT_INV, insert_arx, extract_arx, PPC_OPERAND_GPR }, 571 + 572 + /* The RY field of the SE_RR form instruction. */ 573 + #define RY ARX + 1 574 + #define RZ RY 575 + { 0x1f, PPC_OPSHIFT_INV, insert_ry, extract_ry, PPC_OPERAND_GPR }, 576 + 577 + /* The ARY field of the SE_RR form instruction. */ 578 + #define ARY RY + 1 579 + { 0x1f, PPC_OPSHIFT_INV, insert_ary, extract_ary, PPC_OPERAND_GPR }, 580 + 581 + /* The SCLSCI8 field in a D form instruction. */ 582 + #define SCLSCI8 ARY + 1 583 + { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8, extract_sci8, 0 }, 584 + 585 + /* The SCLSCI8N field in a D form instruction. This is the same as the 586 + SCLSCI8 field, only negated. */ 587 + #define SCLSCI8N SCLSCI8 + 1 588 + { 0xffffffff, PPC_OPSHIFT_INV, insert_sci8n, extract_sci8n, 589 + PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED }, 590 + 591 + /* The SD field of the SD4 form instruction. */ 592 + #define SE_SD SCLSCI8N + 1 593 + { 0xf, 8, NULL, NULL, PPC_OPERAND_PARENS }, 594 + 595 + /* The SD field of the SD4 form instruction, for halfword. */ 596 + #define SE_SDH SE_SD + 1 597 + { 0x1e, PPC_OPSHIFT_INV, insert_sd4h, extract_sd4h, PPC_OPERAND_PARENS }, 598 + 599 + /* The SD field of the SD4 form instruction, for word. */ 600 + #define SE_SDW SE_SDH + 1 601 + { 0x3c, PPC_OPSHIFT_INV, insert_sd4w, extract_sd4w, PPC_OPERAND_PARENS }, 471 602 472 603 /* The SH field in an X or M form instruction. */ 473 - #define SH RSO + 1 604 + #define SH SE_SDW + 1 474 605 #define SH_MASK (0x1f << 11) 475 - { 5, 11, NULL, NULL, 0 }, 606 + /* The other UIMM field in a EVX form instruction. */ 607 + #define EVUIMM SH 608 + /* The FC field in an atomic X form instruction. */ 609 + #define FC SH 610 + { 0x1f, 11, NULL, NULL, 0 }, 611 + 612 + /* The SI field in a HTM X form instruction. */ 613 + #define HTM_SI SH + 1 614 + { 0x1f, 11, NULL, NULL, PPC_OPERAND_SIGNED }, 476 615 477 616 /* The SH field in an MD form instruction. This is split. */ 478 - #define SH6 SH + 1 617 + #define SH6 HTM_SI + 1 479 618 #define SH6_MASK ((0x1f << 11) | (1 << 1)) 480 - { 6, 1, insert_sh6, extract_sh6, 0 }, 619 + { 0x3f, PPC_OPSHIFT_INV, insert_sh6, extract_sh6, 0 }, 481 620 482 621 /* The SH field of the tlbwe instruction, which is optional. */ 483 622 #define SHO SH6 + 1 484 - { 5, 11,NULL, NULL, PPC_OPERAND_OPTIONAL }, 623 + { 0x1f, 11, NULL, NULL, PPC_OPERAND_OPTIONAL }, 485 624 486 625 /* The SI field in a D form instruction. */ 487 626 #define SI SHO + 1 488 - { 16, 0, NULL, NULL, PPC_OPERAND_SIGNED }, 627 + { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED }, 489 628 490 629 /* The SI field in a D form instruction when we accept a wide range 491 630 of positive values. */ 492 631 #define SISIGNOPT SI + 1 493 - { 16, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT }, 632 + { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT }, 633 + 634 + /* The SI8 field in a D form instruction. */ 635 + #define SI8 SISIGNOPT + 1 636 + { 0xff, 0, NULL, NULL, PPC_OPERAND_SIGNED }, 494 637 495 638 /* The SPR field in an XFX form instruction. This is flipped--the 496 639 lower 5 bits are stored in the upper 5 and vice- versa. */ 497 - #define SPR SISIGNOPT + 1 640 + #define SPR SI8 + 1 498 641 #define PMR SPR 642 + #define TMR SPR 499 643 #define SPR_MASK (0x3ff << 11) 500 - { 10, 11, insert_spr, extract_spr, 0 }, 644 + { 0x3ff, 11, insert_spr, extract_spr, 0 }, 501 645 502 646 /* The BAT index number in an XFX form m[ft]ibat[lu] instruction. */ 503 647 #define SPRBAT SPR + 1 504 648 #define SPRBAT_MASK (0x3 << 17) 505 - { 2, 17, NULL, NULL, 0 }, 649 + { 0x3, 17, NULL, NULL, 0 }, 506 650 507 651 /* The SPRG register number in an XFX form m[ft]sprg instruction. */ 508 652 #define SPRG SPRBAT + 1 509 - { 5, 16, insert_sprg, extract_sprg, 0 }, 653 + { 0x1f, 16, insert_sprg, extract_sprg, 0 }, 510 654 511 655 /* The SR field in an X form instruction. */ 512 656 #define SR SPRG + 1 513 - { 4, 16, NULL, NULL, 0 }, 657 + /* The 4-bit UIMM field in a VX form instruction. */ 658 + #define UIMM4 SR 659 + { 0xf, 16, NULL, NULL, 0 }, 514 660 515 661 /* The STRM field in an X AltiVec form instruction. */ 516 662 #define STRM SR + 1 517 - #define STRM_MASK (0x3 << 21) 518 - { 2, 21, NULL, NULL, 0 }, 663 + /* The T field in a tlbilx form instruction. */ 664 + #define T STRM 665 + /* The L field in wclr instructions. */ 666 + #define L2 STRM 667 + { 0x3, 21, NULL, NULL, 0 }, 668 + 669 + /* The ESYNC field in an X (sync) form instruction. */ 670 + #define ESYNC STRM + 1 671 + { 0xf, 16, insert_esync, NULL, PPC_OPERAND_OPTIONAL }, 519 672 520 673 /* The SV field in a POWER SC form instruction. */ 521 - #define SV STRM + 1 522 - { 14, 2, NULL, NULL, 0 }, 674 + #define SV ESYNC + 1 675 + { 0x3fff, 2, NULL, NULL, 0 }, 523 676 524 677 /* The TBR field in an XFX form instruction. This is like the SPR 525 678 field, but it is optional. */ 526 679 #define TBR SV + 1 527 - { 10, 11, insert_tbr, extract_tbr, PPC_OPERAND_OPTIONAL }, 680 + { 0x3ff, 11, insert_tbr, extract_tbr, 681 + PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE}, 682 + /* If the TBR operand is ommitted, use the value 268. */ 683 + { -1, 268, NULL, NULL, 0}, 528 684 529 685 /* The TO field in a D or X form instruction. */ 530 - #define TO TBR + 1 686 + #define TO TBR + 2 687 + #define DUI TO 531 688 #define TO_MASK (0x1f << 21) 532 - { 5, 21, NULL, NULL, 0 }, 533 - 534 - /* The U field in an X form instruction. */ 535 - #define U TO + 1 536 - { 4, 12, NULL, NULL, 0 }, 689 + { 0x1f, 21, NULL, NULL, 0 }, 537 690 538 691 /* The UI field in a D form instruction. */ 539 - #define UI U + 1 540 - { 16, 0, NULL, NULL, 0 }, 692 + #define UI TO + 1 693 + { 0xffff, 0, NULL, NULL, 0 }, 694 + 695 + #define UISIGNOPT UI + 1 696 + { 0xffff, 0, NULL, NULL, PPC_OPERAND_SIGNOPT }, 697 + 698 + /* The IMM field in an SE_IM5 instruction. */ 699 + #define UI5 UISIGNOPT + 1 700 + { 0x1f, 4, NULL, NULL, 0 }, 701 + 702 + /* The OIMM field in an SE_OIM5 instruction. */ 703 + #define OIMM5 UI5 + 1 704 + { 0x1f, PPC_OPSHIFT_INV, insert_oimm, extract_oimm, PPC_OPERAND_PLUS1 }, 705 + 706 + /* The UI7 field in an SE_LI instruction. */ 707 + #define UI7 OIMM5 + 1 708 + { 0x7f, 4, NULL, NULL, 0 }, 541 709 542 710 /* The VA field in a VA, VX or VXR form instruction. */ 543 - #define VA UI + 1 544 - #define VA_MASK (0x1f << 16) 545 - { 5, 16, NULL, NULL, PPC_OPERAND_VR }, 711 + #define VA UI7 + 1 712 + { 0x1f, 16, NULL, NULL, PPC_OPERAND_VR }, 546 713 547 714 /* The VB field in a VA, VX or VXR form instruction. */ 548 715 #define VB VA + 1 549 - #define VB_MASK (0x1f << 11) 550 - { 5, 11, NULL, NULL, PPC_OPERAND_VR }, 716 + { 0x1f, 11, NULL, NULL, PPC_OPERAND_VR }, 551 717 552 718 /* The VC field in a VA form instruction. */ 553 719 #define VC VB + 1 554 - #define VC_MASK (0x1f << 6) 555 - { 5, 6, NULL, NULL, PPC_OPERAND_VR }, 720 + { 0x1f, 6, NULL, NULL, PPC_OPERAND_VR }, 556 721 557 722 /* The VD or VS field in a VA, VX, VXR or X form instruction. */ 558 723 #define VD VC + 1 559 724 #define VS VD 560 - #define VD_MASK (0x1f << 21) 561 - { 5, 21, NULL, NULL, PPC_OPERAND_VR }, 725 + { 0x1f, 21, NULL, NULL, PPC_OPERAND_VR }, 562 726 563 - /* The SIMM field in a VX form instruction. */ 727 + /* The SIMM field in a VX form instruction, and TE in Z form. */ 564 728 #define SIMM VD + 1 565 - { 5, 16, NULL, NULL, PPC_OPERAND_SIGNED}, 729 + #define TE SIMM 730 + { 0x1f, 16, NULL, NULL, PPC_OPERAND_SIGNED}, 566 731 567 732 /* The UIMM field in a VX form instruction. */ 568 733 #define UIMM SIMM + 1 569 - { 5, 16, NULL, NULL, 0 }, 734 + #define DCTL UIMM 735 + { 0x1f, 16, NULL, NULL, 0 }, 736 + 737 + /* The 3-bit UIMM field in a VX form instruction. */ 738 + #define UIMM3 UIMM + 1 739 + { 0x7, 16, NULL, NULL, 0 }, 740 + 741 + /* The 6-bit UIM field in a X form instruction. */ 742 + #define UIM6 UIMM3 + 1 743 + { 0x3f, 16, NULL, NULL, 0 }, 744 + 745 + /* The SIX field in a VX form instruction. */ 746 + #define SIX UIM6 + 1 747 + { 0xf, 11, NULL, NULL, 0 }, 748 + 749 + /* The PS field in a VX form instruction. */ 750 + #define PS SIX + 1 751 + { 0x1, 9, NULL, NULL, 0 }, 570 752 571 753 /* The SHB field in a VA form instruction. */ 572 - #define SHB UIMM + 1 573 - { 4, 6, NULL, NULL, 0 }, 574 - 575 - /* The other UIMM field in a EVX form instruction. */ 576 - #define EVUIMM SHB + 1 577 - { 5, 11, NULL, NULL, 0 }, 754 + #define SHB PS + 1 755 + { 0xf, 6, NULL, NULL, 0 }, 578 756 579 757 /* The other UIMM field in a half word EVX form instruction. */ 580 - #define EVUIMM_2 EVUIMM + 1 581 - { 32, 11, insert_ev2, extract_ev2, PPC_OPERAND_PARENS }, 758 + #define EVUIMM_2 SHB + 1 759 + { 0x3e, 10, NULL, NULL, PPC_OPERAND_PARENS }, 582 760 583 761 /* The other UIMM field in a word EVX form instruction. */ 584 762 #define EVUIMM_4 EVUIMM_2 + 1 585 - { 32, 11, insert_ev4, extract_ev4, PPC_OPERAND_PARENS }, 763 + { 0x7c, 9, NULL, NULL, PPC_OPERAND_PARENS }, 586 764 587 765 /* The other UIMM field in a double EVX form instruction. */ 588 766 #define EVUIMM_8 EVUIMM_4 + 1 589 - { 32, 11, insert_ev8, extract_ev8, PPC_OPERAND_PARENS }, 767 + { 0xf8, 8, NULL, NULL, PPC_OPERAND_PARENS }, 590 768 591 - /* The WS field. */ 769 + /* The WS or DRM field in an X form instruction. */ 592 770 #define WS EVUIMM_8 + 1 593 - #define WS_MASK (0x7 << 11) 594 - { 3, 11, NULL, NULL, 0 }, 771 + #define DRM WS 772 + { 0x7, 11, NULL, NULL, 0 }, 595 773 596 - /* The L field in an mtmsrd or A form instruction. */ 597 - #define MTMSRD_L WS + 1 598 - #define A_L MTMSRD_L 599 - { 1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL }, 774 + /* PowerPC paired singles extensions. */ 775 + /* W bit in the pair singles instructions for x type instructions. */ 776 + #define PSWM WS + 1 777 + /* The BO16 field in a BD8 form instruction. */ 778 + #define BO16 PSWM 779 + { 0x1, 10, 0, 0, 0 }, 600 780 601 - /* The DCM field in a Z form instruction. */ 602 - #define DCM MTMSRD_L + 1 603 - { 6, 16, NULL, NULL, 0 }, 781 + /* IDX bits for quantization in the pair singles instructions. */ 782 + #define PSQ PSWM + 1 783 + { 0x7, 12, 0, 0, 0 }, 604 784 605 - /* Likewise, the DGM field in a Z form instruction. */ 606 - #define DGM DCM + 1 607 - { 6, 16, NULL, NULL, 0 }, 785 + /* IDX bits for quantization in the pair singles x-type instructions. */ 786 + #define PSQM PSQ + 1 787 + { 0x7, 7, 0, 0, 0 }, 608 788 609 - #define TE DGM + 1 610 - { 5, 11, NULL, NULL, 0 }, 789 + /* Smaller D field for quantization in the pair singles instructions. */ 790 + #define PSD PSQM + 1 791 + { 0xfff, 0, 0, 0, PPC_OPERAND_PARENS | PPC_OPERAND_SIGNED }, 611 792 612 - #define RMC TE + 1 613 - { 2, 21, NULL, NULL, 0 }, 793 + /* The L field in an mtmsrd or A form instruction or R or W in an X form. */ 794 + #define A_L PSD + 1 795 + #define W A_L 796 + #define X_R A_L 797 + { 0x1, 16, NULL, NULL, PPC_OPERAND_OPTIONAL }, 798 + 799 + /* The RMC or CY field in a Z23 form instruction. */ 800 + #define RMC A_L + 1 801 + #define CY RMC 802 + { 0x3, 9, NULL, NULL, 0 }, 614 803 615 804 #define R RMC + 1 616 - { 1, 15, NULL, NULL, 0 }, 805 + { 0x1, 16, NULL, NULL, 0 }, 617 806 618 - #define SP R + 1 619 - { 2, 11, NULL, NULL, 0 }, 807 + #define RIC R + 1 808 + { 0x3, 18, NULL, NULL, PPC_OPERAND_OPTIONAL }, 809 + 810 + #define PRS RIC + 1 811 + { 0x1, 17, NULL, NULL, PPC_OPERAND_OPTIONAL }, 812 + 813 + #define SP PRS + 1 814 + { 0x3, 19, NULL, NULL, 0 }, 620 815 621 816 #define S SP + 1 622 - { 1, 11, NULL, NULL, 0 }, 817 + { 0x1, 20, NULL, NULL, 0 }, 818 + 819 + /* The S field in a XL form instruction. */ 820 + #define SXL S + 1 821 + { 0x1, 11, NULL, NULL, PPC_OPERAND_OPTIONAL | PPC_OPERAND_OPTIONAL_VALUE}, 822 + /* If the SXL operand is ommitted, use the value 1. */ 823 + { -1, 1, NULL, NULL, 0}, 623 824 624 825 /* SH field starting at bit position 16. */ 625 - #define SH16 S + 1 626 - { 6, 10, NULL, NULL, 0 }, 627 - 628 - /* The L field in an X form with the RT field fixed instruction. */ 629 - #define XRT_L SH16 + 1 630 - { 2, 21, NULL, NULL, PPC_OPERAND_OPTIONAL }, 826 + #define SH16 SXL + 2 827 + /* The DCM and DGM fields in a Z form instruction. */ 828 + #define DCM SH16 829 + #define DGM DCM 830 + { 0x3f, 10, NULL, NULL, 0 }, 631 831 632 832 /* The EH field in larx instruction. */ 633 - #define EH XRT_L + 1 634 - { 1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL }, 833 + #define EH SH16 + 1 834 + { 0x1, 0, NULL, NULL, PPC_OPERAND_OPTIONAL }, 835 + 836 + /* The L field in an mtfsf or XFL form instruction. */ 837 + /* The A field in a HTM X form instruction. */ 838 + #define XFL_L EH + 1 839 + #define HTM_A XFL_L 840 + { 0x1, 25, NULL, NULL, PPC_OPERAND_OPTIONAL}, 841 + 842 + /* Xilinx APU related masks and macros */ 843 + #define FCRT XFL_L + 1 844 + #define FCRT_MASK (0x1f << 21) 845 + { 0x1f, 21, 0, 0, PPC_OPERAND_FCR }, 846 + 847 + /* Xilinx FSL related masks and macros */ 848 + #define FSL FCRT + 1 849 + #define FSL_MASK (0x1f << 11) 850 + { 0x1f, 11, 0, 0, PPC_OPERAND_FSL }, 851 + 852 + /* Xilinx UDI related masks and macros */ 853 + #define URT FSL + 1 854 + { 0x1f, 21, 0, 0, PPC_OPERAND_UDI }, 855 + 856 + #define URA URT + 1 857 + { 0x1f, 16, 0, 0, PPC_OPERAND_UDI }, 858 + 859 + #define URB URA + 1 860 + { 0x1f, 11, 0, 0, PPC_OPERAND_UDI }, 861 + 862 + #define URC URB + 1 863 + { 0x1f, 6, 0, 0, PPC_OPERAND_UDI }, 864 + 865 + /* The VLESIMM field in a D form instruction. */ 866 + #define VLESIMM URC + 1 867 + { 0xffff, PPC_OPSHIFT_INV, insert_vlesi, extract_vlesi, 868 + PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT }, 869 + 870 + /* The VLENSIMM field in a D form instruction. */ 871 + #define VLENSIMM VLESIMM + 1 872 + { 0xffff, PPC_OPSHIFT_INV, insert_vlensi, extract_vlensi, 873 + PPC_OPERAND_NEGATIVE | PPC_OPERAND_SIGNED | PPC_OPERAND_SIGNOPT }, 874 + 875 + /* The VLEUIMM field in a D form instruction. */ 876 + #define VLEUIMM VLENSIMM + 1 877 + { 0xffff, PPC_OPSHIFT_INV, insert_vleui, extract_vleui, 0 }, 878 + 879 + /* The VLEUIMML field in a D form instruction. */ 880 + #define VLEUIMML VLEUIMM + 1 881 + { 0xffff, PPC_OPSHIFT_INV, insert_vleil, extract_vleil, 0 }, 882 + 883 + /* The XT and XS fields in an XX1 or XX3 form instruction. This is split. */ 884 + #define XS6 VLEUIMML + 1 885 + #define XT6 XS6 886 + { 0x3f, PPC_OPSHIFT_INV, insert_xt6, extract_xt6, PPC_OPERAND_VSR }, 887 + 888 + /* The XT and XS fields in an DQ form VSX instruction. This is split. */ 889 + #define XSQ6 XT6 + 1 890 + #define XTQ6 XSQ6 891 + { 0x3f, PPC_OPSHIFT_INV, insert_xtq6, extract_xtq6, PPC_OPERAND_VSR }, 892 + 893 + /* The XA field in an XX3 form instruction. This is split. */ 894 + #define XA6 XTQ6 + 1 895 + { 0x3f, PPC_OPSHIFT_INV, insert_xa6, extract_xa6, PPC_OPERAND_VSR }, 896 + 897 + /* The XB field in an XX2 or XX3 form instruction. This is split. */ 898 + #define XB6 XA6 + 1 899 + { 0x3f, PPC_OPSHIFT_INV, insert_xb6, extract_xb6, PPC_OPERAND_VSR }, 900 + 901 + /* The XB field in an XX3 form instruction when it must be the same as 902 + the XA field in the instruction. This is used in extended mnemonics 903 + like xvmovdp. This is split. */ 904 + #define XB6S XB6 + 1 905 + { 0x3f, PPC_OPSHIFT_INV, insert_xb6s, extract_xb6s, PPC_OPERAND_FAKE }, 906 + 907 + /* The XC field in an XX4 form instruction. This is split. */ 908 + #define XC6 XB6S + 1 909 + { 0x3f, PPC_OPSHIFT_INV, insert_xc6, extract_xc6, PPC_OPERAND_VSR }, 910 + 911 + /* The DM or SHW field in an XX3 form instruction. */ 912 + #define DM XC6 + 1 913 + #define SHW DM 914 + { 0x3, 8, NULL, NULL, 0 }, 915 + 916 + /* The DM field in an extended mnemonic XX3 form instruction. */ 917 + #define DMEX DM + 1 918 + { 0x3, 8, insert_dm, extract_dm, 0 }, 919 + 920 + /* The UIM field in an XX2 form instruction. */ 921 + #define UIM DMEX + 1 922 + /* The 2-bit UIMM field in a VX form instruction. */ 923 + #define UIMM2 UIM 924 + /* The 2-bit L field in a darn instruction. */ 925 + #define LRAND UIM 926 + { 0x3, 16, NULL, NULL, 0 }, 927 + 928 + #define ERAT_T UIM + 1 929 + { 0x7, 21, NULL, NULL, 0 }, 930 + 931 + #define IH ERAT_T + 1 932 + { 0x7, 21, NULL, NULL, PPC_OPERAND_OPTIONAL }, 933 + 934 + /* The 8-bit IMM8 field in a XX1 form instruction. */ 935 + #define IMM8 IH + 1 936 + { 0xff, 11, NULL, NULL, PPC_OPERAND_SIGNOPT }, 635 937 }; 636 938 939 + const unsigned int num_powerpc_operands = (sizeof (powerpc_operands) 940 + / sizeof (powerpc_operands[0])); 941 + 637 942 /* The functions used to insert and extract complicated operands. */ 943 + 944 + /* The ARX, ARY, RX and RY operands are alternate encodings of GPRs. */ 945 + 946 + static unsigned long 947 + insert_arx (unsigned long insn, 948 + long value, 949 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 950 + const char **errmsg ATTRIBUTE_UNUSED) 951 + { 952 + if (value >= 8 && value < 24) 953 + return insn | ((value - 8) & 0xf); 954 + else 955 + { 956 + *errmsg = _("invalid register"); 957 + return 0; 958 + } 959 + } 960 + 961 + static long 962 + extract_arx (unsigned long insn, 963 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 964 + int *invalid ATTRIBUTE_UNUSED) 965 + { 966 + return (insn & 0xf) + 8; 967 + } 968 + 969 + static unsigned long 970 + insert_ary (unsigned long insn, 971 + long value, 972 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 973 + const char **errmsg ATTRIBUTE_UNUSED) 974 + { 975 + if (value >= 8 && value < 24) 976 + return insn | (((value - 8) & 0xf) << 4); 977 + else 978 + { 979 + *errmsg = _("invalid register"); 980 + return 0; 981 + } 982 + } 983 + 984 + static long 985 + extract_ary (unsigned long insn, 986 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 987 + int *invalid ATTRIBUTE_UNUSED) 988 + { 989 + return ((insn >> 4) & 0xf) + 8; 990 + } 991 + 992 + static unsigned long 993 + insert_rx (unsigned long insn, 994 + long value, 995 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 996 + const char **errmsg) 997 + { 998 + if (value >= 0 && value < 8) 999 + return insn | value; 1000 + else if (value >= 24 && value <= 31) 1001 + return insn | (value - 16); 1002 + else 1003 + { 1004 + *errmsg = _("invalid register"); 1005 + return 0; 1006 + } 1007 + } 1008 + 1009 + static long 1010 + extract_rx (unsigned long insn, 1011 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1012 + int *invalid ATTRIBUTE_UNUSED) 1013 + { 1014 + int value = insn & 0xf; 1015 + if (value >= 0 && value < 8) 1016 + return value; 1017 + else 1018 + return value + 16; 1019 + } 1020 + 1021 + static unsigned long 1022 + insert_ry (unsigned long insn, 1023 + long value, 1024 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1025 + const char **errmsg) 1026 + { 1027 + if (value >= 0 && value < 8) 1028 + return insn | (value << 4); 1029 + else if (value >= 24 && value <= 31) 1030 + return insn | ((value - 16) << 4); 1031 + else 1032 + { 1033 + *errmsg = _("invalid register"); 1034 + return 0; 1035 + } 1036 + } 1037 + 1038 + static long 1039 + extract_ry (unsigned long insn, 1040 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1041 + int *invalid ATTRIBUTE_UNUSED) 1042 + { 1043 + int value = (insn >> 4) & 0xf; 1044 + if (value >= 0 && value < 8) 1045 + return value; 1046 + else 1047 + return value + 16; 1048 + } 638 1049 639 1050 /* The BA field in an XL form instruction when it must be the same as 640 1051 the BT field in the same instruction. This operand is marked FAKE. ··· 1086 615 static unsigned long 1087 616 insert_bat (unsigned long insn, 1088 617 long value ATTRIBUTE_UNUSED, 1089 - int dialect ATTRIBUTE_UNUSED, 618 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1090 619 const char **errmsg ATTRIBUTE_UNUSED) 1091 620 { 1092 621 return insn | (((insn >> 21) & 0x1f) << 16); ··· 1094 623 1095 624 static long 1096 625 extract_bat (unsigned long insn, 1097 - int dialect ATTRIBUTE_UNUSED, 626 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1098 627 int *invalid) 1099 628 { 1100 629 if (((insn >> 21) & 0x1f) != ((insn >> 16) & 0x1f)) ··· 1111 640 static unsigned long 1112 641 insert_bba (unsigned long insn, 1113 642 long value ATTRIBUTE_UNUSED, 1114 - int dialect ATTRIBUTE_UNUSED, 643 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1115 644 const char **errmsg ATTRIBUTE_UNUSED) 1116 645 { 1117 646 return insn | (((insn >> 16) & 0x1f) << 11); ··· 1119 648 1120 649 static long 1121 650 extract_bba (unsigned long insn, 1122 - int dialect ATTRIBUTE_UNUSED, 651 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1123 652 int *invalid) 1124 653 { 1125 654 if (((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f)) 1126 655 *invalid = 1; 1127 656 return 0; 1128 - } 1129 - 1130 - /* The BD field in a B form instruction. The lower two bits are 1131 - forced to zero. */ 1132 - 1133 - static unsigned long 1134 - insert_bd (unsigned long insn, 1135 - long value, 1136 - int dialect ATTRIBUTE_UNUSED, 1137 - const char **errmsg ATTRIBUTE_UNUSED) 1138 - { 1139 - return insn | (value & 0xfffc); 1140 - } 1141 - 1142 - static long 1143 - extract_bd (unsigned long insn, 1144 - int dialect ATTRIBUTE_UNUSED, 1145 - int *invalid ATTRIBUTE_UNUSED) 1146 - { 1147 - return ((insn & 0xfffc) ^ 0x8000) - 0x8000; 1148 657 } 1149 658 1150 659 /* The BD field in a B form instruction when the - modifier is used. ··· 1138 687 the "y" bit. "at" == 00 => no hint, "at" == 01 => unpredictable, 1139 688 "at" == 10 => not taken, "at" == 11 => taken. The "t" bit is 00001 1140 689 in BO field, the "a" bit is 00010 for branch on CR(BI) and 01000 1141 - for branch on CTR. We only handle the taken/not-taken hint here. */ 690 + for branch on CTR. We only handle the taken/not-taken hint here. 691 + Note that we don't relax the conditions tested here when 692 + disassembling with -Many because insns using extract_bdm and 693 + extract_bdp always occur in pairs. One or the other will always 694 + be valid. */ 695 + 696 + #define ISA_V2 (PPC_OPCODE_POWER4 | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN) 1142 697 1143 698 static unsigned long 1144 699 insert_bdm (unsigned long insn, 1145 700 long value, 1146 - int dialect, 701 + ppc_cpu_t dialect, 1147 702 const char **errmsg ATTRIBUTE_UNUSED) 1148 703 { 1149 - if ((dialect & PPC_OPCODE_POWER4) == 0) 704 + if ((dialect & ISA_V2) == 0) 1150 705 { 1151 706 if ((value & 0x8000) != 0) 1152 707 insn |= 1 << 21; ··· 1169 712 1170 713 static long 1171 714 extract_bdm (unsigned long insn, 1172 - int dialect, 715 + ppc_cpu_t dialect, 1173 716 int *invalid) 1174 717 { 1175 - if ((dialect & PPC_OPCODE_POWER4) == 0) 718 + if ((dialect & ISA_V2) == 0) 1176 719 { 1177 720 if (((insn & (1 << 21)) == 0) != ((insn & (1 << 15)) == 0)) 1178 721 *invalid = 1; ··· 1194 737 static unsigned long 1195 738 insert_bdp (unsigned long insn, 1196 739 long value, 1197 - int dialect, 740 + ppc_cpu_t dialect, 1198 741 const char **errmsg ATTRIBUTE_UNUSED) 1199 742 { 1200 - if ((dialect & PPC_OPCODE_POWER4) == 0) 743 + if ((dialect & ISA_V2) == 0) 1201 744 { 1202 745 if ((value & 0x8000) == 0) 1203 746 insn |= 1 << 21; ··· 1214 757 1215 758 static long 1216 759 extract_bdp (unsigned long insn, 1217 - int dialect, 760 + ppc_cpu_t dialect, 1218 761 int *invalid) 1219 762 { 1220 - if ((dialect & PPC_OPCODE_POWER4) == 0) 763 + if ((dialect & ISA_V2) == 0) 1221 764 { 1222 765 if (((insn & (1 << 21)) == 0) == ((insn & (1 << 15)) == 0)) 1223 766 *invalid = 1; ··· 1232 775 return ((insn & 0xfffc) ^ 0x8000) - 0x8000; 1233 776 } 1234 777 778 + static inline int 779 + valid_bo_pre_v2 (long value) 780 + { 781 + /* Certain encodings have bits that are required to be zero. 782 + These are (z must be zero, y may be anything): 783 + 0000y 784 + 0001y 785 + 001zy 786 + 0100y 787 + 0101y 788 + 011zy 789 + 1z00y 790 + 1z01y 791 + 1z1zz 792 + */ 793 + if ((value & 0x14) == 0) 794 + return 1; 795 + else if ((value & 0x14) == 0x4) 796 + return (value & 0x2) == 0; 797 + else if ((value & 0x14) == 0x10) 798 + return (value & 0x8) == 0; 799 + else 800 + return value == 0x14; 801 + } 802 + 803 + static inline int 804 + valid_bo_post_v2 (long value) 805 + { 806 + /* Certain encodings have bits that are required to be zero. 807 + These are (z must be zero, a & t may be anything): 808 + 0000z 809 + 0001z 810 + 001at 811 + 0100z 812 + 0101z 813 + 011at 814 + 1a00t 815 + 1a01t 816 + 1z1zz 817 + */ 818 + if ((value & 0x14) == 0) 819 + return (value & 0x1) == 0; 820 + else if ((value & 0x14) == 0x14) 821 + return value == 0x14; 822 + else 823 + return 1; 824 + } 825 + 1235 826 /* Check for legal values of a BO field. */ 1236 827 1237 828 static int 1238 - valid_bo (long value, int dialect) 829 + valid_bo (long value, ppc_cpu_t dialect, int extract) 1239 830 { 1240 - if ((dialect & PPC_OPCODE_POWER4) == 0) 1241 - { 1242 - /* Certain encodings have bits that are required to be zero. 1243 - These are (z must be zero, y may be anything): 1244 - 001zy 1245 - 011zy 1246 - 1z00y 1247 - 1z01y 1248 - 1z1zz 1249 - */ 1250 - switch (value & 0x14) 1251 - { 1252 - default: 1253 - case 0: 1254 - return 1; 1255 - case 0x4: 1256 - return (value & 0x2) == 0; 1257 - case 0x10: 1258 - return (value & 0x8) == 0; 1259 - case 0x14: 1260 - return value == 0x14; 1261 - } 1262 - } 831 + int valid_y = valid_bo_pre_v2 (value); 832 + int valid_at = valid_bo_post_v2 (value); 833 + 834 + /* When disassembling with -Many, accept either encoding on the 835 + second pass through opcodes. */ 836 + if (extract && dialect == ~(ppc_cpu_t) PPC_OPCODE_ANY) 837 + return valid_y || valid_at; 838 + if ((dialect & ISA_V2) == 0) 839 + return valid_y; 1263 840 else 1264 - { 1265 - /* Certain encodings have bits that are required to be zero. 1266 - These are (z must be zero, a & t may be anything): 1267 - 0000z 1268 - 0001z 1269 - 0100z 1270 - 0101z 1271 - 001at 1272 - 011at 1273 - 1a00t 1274 - 1a01t 1275 - 1z1zz 1276 - */ 1277 - if ((value & 0x14) == 0) 1278 - return (value & 0x1) == 0; 1279 - else if ((value & 0x14) == 0x14) 1280 - return value == 0x14; 1281 - else 1282 - return 1; 1283 - } 841 + return valid_at; 1284 842 } 1285 843 1286 844 /* The BO field in a B form instruction. Warn about attempts to set ··· 1304 832 static unsigned long 1305 833 insert_bo (unsigned long insn, 1306 834 long value, 1307 - int dialect, 835 + ppc_cpu_t dialect, 1308 836 const char **errmsg) 1309 837 { 1310 - if (!valid_bo (value, dialect)) 838 + if (!valid_bo (value, dialect, 0)) 1311 839 *errmsg = _("invalid conditional option"); 840 + else if (PPC_OP (insn) == 19 && (insn & 0x400) && ! (value & 4)) 841 + *errmsg = _("invalid counter access"); 1312 842 return insn | ((value & 0x1f) << 21); 1313 843 } 1314 844 1315 845 static long 1316 846 extract_bo (unsigned long insn, 1317 - int dialect, 847 + ppc_cpu_t dialect, 1318 848 int *invalid) 1319 849 { 1320 850 long value; 1321 851 1322 852 value = (insn >> 21) & 0x1f; 1323 - if (!valid_bo (value, dialect)) 853 + if (!valid_bo (value, dialect, 1)) 1324 854 *invalid = 1; 1325 855 return value; 1326 856 } ··· 1334 860 static unsigned long 1335 861 insert_boe (unsigned long insn, 1336 862 long value, 1337 - int dialect, 863 + ppc_cpu_t dialect, 1338 864 const char **errmsg) 1339 865 { 1340 - if (!valid_bo (value, dialect)) 866 + if (!valid_bo (value, dialect, 0)) 1341 867 *errmsg = _("invalid conditional option"); 868 + else if (PPC_OP (insn) == 19 && (insn & 0x400) && ! (value & 4)) 869 + *errmsg = _("invalid counter access"); 1342 870 else if ((value & 1) != 0) 1343 871 *errmsg = _("attempt to set y bit when using + or - modifier"); 1344 872 ··· 1349 873 1350 874 static long 1351 875 extract_boe (unsigned long insn, 1352 - int dialect, 876 + ppc_cpu_t dialect, 1353 877 int *invalid) 1354 878 { 1355 879 long value; 1356 880 1357 881 value = (insn >> 21) & 0x1f; 1358 - if (!valid_bo (value, dialect)) 882 + if (!valid_bo (value, dialect, 1)) 1359 883 *invalid = 1; 1360 884 return value & 0x1e; 1361 885 } 1362 886 1363 - /* The DQ field in a DQ form instruction. This is like D, but the 1364 - lower four bits are forced to zero. */ 887 + /* The DCMX field in a X form instruction when the field is split 888 + into separate DC, DM and DX fields. */ 1365 889 1366 890 static unsigned long 1367 - insert_dq (unsigned long insn, 1368 - long value, 1369 - int dialect ATTRIBUTE_UNUSED, 1370 - const char **errmsg) 1371 - { 1372 - if ((value & 0xf) != 0) 1373 - *errmsg = _("offset not a multiple of 16"); 1374 - return insn | (value & 0xfff0); 1375 - } 1376 - 1377 - static long 1378 - extract_dq (unsigned long insn, 1379 - int dialect ATTRIBUTE_UNUSED, 1380 - int *invalid ATTRIBUTE_UNUSED) 1381 - { 1382 - return ((insn & 0xfff0) ^ 0x8000) - 0x8000; 1383 - } 1384 - 1385 - static unsigned long 1386 - insert_ev2 (unsigned long insn, 891 + insert_dcmxs (unsigned long insn, 1387 892 long value, 1388 - int dialect ATTRIBUTE_UNUSED, 1389 - const char **errmsg) 893 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 894 + const char **errmsg ATTRIBUTE_UNUSED) 1390 895 { 1391 - if ((value & 1) != 0) 1392 - *errmsg = _("offset not a multiple of 2"); 1393 - if ((value > 62) != 0) 1394 - *errmsg = _("offset greater than 62"); 1395 - return insn | ((value & 0x3e) << 10); 896 + return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3) | (value & 0x40); 1396 897 } 1397 898 1398 899 static long 1399 - extract_ev2 (unsigned long insn, 1400 - int dialect ATTRIBUTE_UNUSED, 900 + extract_dcmxs (unsigned long insn, 901 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1401 902 int *invalid ATTRIBUTE_UNUSED) 1402 903 { 1403 - return (insn >> 10) & 0x3e; 904 + return (insn & 0x40) | ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f); 1404 905 } 1405 906 907 + /* The D field in a DX form instruction when the field is split 908 + into separate D0, D1 and D2 fields. */ 909 + 1406 910 static unsigned long 1407 - insert_ev4 (unsigned long insn, 911 + insert_dxd (unsigned long insn, 1408 912 long value, 1409 - int dialect ATTRIBUTE_UNUSED, 1410 - const char **errmsg) 913 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 914 + const char **errmsg ATTRIBUTE_UNUSED) 1411 915 { 1412 - if ((value & 3) != 0) 1413 - *errmsg = _("offset not a multiple of 4"); 1414 - if ((value > 124) != 0) 1415 - *errmsg = _("offset greater than 124"); 1416 - return insn | ((value & 0x7c) << 9); 916 + return insn | (value & 0xffc1) | ((value & 0x3e) << 15); 1417 917 } 1418 918 1419 919 static long 1420 - extract_ev4 (unsigned long insn, 1421 - int dialect ATTRIBUTE_UNUSED, 920 + extract_dxd (unsigned long insn, 921 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1422 922 int *invalid ATTRIBUTE_UNUSED) 1423 923 { 1424 - return (insn >> 9) & 0x7c; 924 + unsigned long dxd = (insn & 0xffc1) | ((insn >> 15) & 0x3e); 925 + return (dxd ^ 0x8000) - 0x8000; 1425 926 } 1426 927 1427 928 static unsigned long 1428 - insert_ev8 (unsigned long insn, 929 + insert_dxdn (unsigned long insn, 1429 930 long value, 1430 - int dialect ATTRIBUTE_UNUSED, 1431 - const char **errmsg) 931 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 932 + const char **errmsg ATTRIBUTE_UNUSED) 1432 933 { 1433 - if ((value & 7) != 0) 1434 - *errmsg = _("offset not a multiple of 8"); 1435 - if ((value > 248) != 0) 1436 - *errmsg = _("offset greater than 248"); 1437 - return insn | ((value & 0xf8) << 8); 934 + return insert_dxd (insn, -value, dialect, errmsg); 1438 935 } 1439 936 1440 937 static long 1441 - extract_ev8 (unsigned long insn, 1442 - int dialect ATTRIBUTE_UNUSED, 938 + extract_dxdn (unsigned long insn, 939 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1443 940 int *invalid ATTRIBUTE_UNUSED) 1444 941 { 1445 - return (insn >> 8) & 0xf8; 1446 - } 1447 - 1448 - /* The DS field in a DS form instruction. This is like D, but the 1449 - lower two bits are forced to zero. */ 1450 - 1451 - static unsigned long 1452 - insert_ds (unsigned long insn, 1453 - long value, 1454 - int dialect ATTRIBUTE_UNUSED, 1455 - const char **errmsg) 1456 - { 1457 - if ((value & 3) != 0) 1458 - *errmsg = _("offset not a multiple of 4"); 1459 - return insn | (value & 0xfffc); 1460 - } 1461 - 1462 - static long 1463 - extract_ds (unsigned long insn, 1464 - int dialect ATTRIBUTE_UNUSED, 1465 - int *invalid ATTRIBUTE_UNUSED) 1466 - { 1467 - return ((insn & 0xfffc) ^ 0x8000) - 0x8000; 1468 - } 1469 - 1470 - /* The DE field in a DE form instruction. */ 1471 - 1472 - static unsigned long 1473 - insert_de (unsigned long insn, 1474 - long value, 1475 - int dialect ATTRIBUTE_UNUSED, 1476 - const char **errmsg) 1477 - { 1478 - if (value > 2047 || value < -2048) 1479 - *errmsg = _("offset not between -2048 and 2047"); 1480 - return insn | ((value << 4) & 0xfff0); 1481 - } 1482 - 1483 - static long 1484 - extract_de (unsigned long insn, 1485 - int dialect ATTRIBUTE_UNUSED, 1486 - int *invalid ATTRIBUTE_UNUSED) 1487 - { 1488 - return (insn & 0xfff0) >> 4; 1489 - } 1490 - 1491 - /* The DES field in a DES form instruction. */ 1492 - 1493 - static unsigned long 1494 - insert_des (unsigned long insn, 1495 - long value, 1496 - int dialect ATTRIBUTE_UNUSED, 1497 - const char **errmsg) 1498 - { 1499 - if (value > 8191 || value < -8192) 1500 - *errmsg = _("offset not between -8192 and 8191"); 1501 - else if ((value & 3) != 0) 1502 - *errmsg = _("offset not a multiple of 4"); 1503 - return insn | ((value << 2) & 0xfff0); 1504 - } 1505 - 1506 - static long 1507 - extract_des (unsigned long insn, 1508 - int dialect ATTRIBUTE_UNUSED, 1509 - int *invalid ATTRIBUTE_UNUSED) 1510 - { 1511 - return (((insn >> 2) & 0x3ffc) ^ 0x2000) - 0x2000; 942 + return -extract_dxd (insn, dialect, invalid); 1512 943 } 1513 944 1514 945 /* FXM mask in mfcr and mtcrf instructions. */ ··· 1423 1040 static unsigned long 1424 1041 insert_fxm (unsigned long insn, 1425 1042 long value, 1426 - int dialect, 1043 + ppc_cpu_t dialect, 1427 1044 const char **errmsg) 1428 1045 { 1429 1046 /* If we're handling the mfocrf and mtocrf insns ensure that exactly ··· 1437 1054 } 1438 1055 } 1439 1056 1440 - /* If the optional field on mfcr is missing that means we want to use 1441 - the old form of the instruction that moves the whole cr. In that 1442 - case we'll have VALUE zero. There doesn't seem to be a way to 1443 - distinguish this from the case where someone writes mfcr %r3,0. */ 1444 - else if (value == 0) 1445 - ; 1446 - 1447 1057 /* If only one bit of the FXM field is set, we can use the new form 1448 1058 of the instruction, which is faster. Unlike the Power4 branch hint 1449 1059 encoding, this is not backward compatible. Do not generate the 1450 1060 new form unless -mpower4 has been given, or -many and the two 1451 1061 operand form of mfcr was used. */ 1452 - else if ((value & -value) == value 1062 + else if (value > 0 1063 + && (value & -value) == value 1453 1064 && ((dialect & PPC_OPCODE_POWER4) != 0 1454 1065 || ((dialect & PPC_OPCODE_ANY) != 0 1455 1066 && (insn & (0x3ff << 1)) == 19 << 1))) ··· 1452 1075 /* Any other value on mfcr is an error. */ 1453 1076 else if ((insn & (0x3ff << 1)) == 19 << 1) 1454 1077 { 1455 - *errmsg = _("ignoring invalid mfcr mask"); 1078 + /* A value of -1 means we used the one operand form of 1079 + mfcr which is valid. */ 1080 + if (value != -1) 1081 + *errmsg = _("invalid mfcr mask"); 1456 1082 value = 0; 1457 1083 } 1458 1084 ··· 1464 1084 1465 1085 static long 1466 1086 extract_fxm (unsigned long insn, 1467 - int dialect ATTRIBUTE_UNUSED, 1087 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1468 1088 int *invalid) 1469 1089 { 1470 1090 long mask = (insn >> 12) & 0xff; ··· 1482 1102 { 1483 1103 if (mask != 0) 1484 1104 *invalid = 1; 1105 + else 1106 + mask = -1; 1485 1107 } 1486 1108 1487 1109 return mask; 1488 1110 } 1489 1111 1490 - /* The LI field in an I form instruction. The lower two bits are 1491 - forced to zero. */ 1492 - 1493 1112 static unsigned long 1494 - insert_li (unsigned long insn, 1495 - long value, 1496 - int dialect ATTRIBUTE_UNUSED, 1497 - const char **errmsg) 1113 + insert_li20 (unsigned long insn, 1114 + long value, 1115 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1116 + const char **errmsg ATTRIBUTE_UNUSED) 1498 1117 { 1499 - if ((value & 3) != 0) 1500 - *errmsg = _("ignoring least significant bits in branch offset"); 1501 - return insn | (value & 0x3fffffc); 1118 + return insn | ((value & 0xf0000) >> 5) | ((value & 0x0f800) << 5) | (value & 0x7ff); 1502 1119 } 1503 1120 1504 1121 static long 1505 - extract_li (unsigned long insn, 1506 - int dialect ATTRIBUTE_UNUSED, 1507 - int *invalid ATTRIBUTE_UNUSED) 1122 + extract_li20 (unsigned long insn, 1123 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1124 + int *invalid ATTRIBUTE_UNUSED) 1508 1125 { 1509 - return ((insn & 0x3fffffc) ^ 0x2000000) - 0x2000000; 1126 + long ext = ((insn & 0x4000) == 0x4000) ? 0xfff00000 : 0x00000000; 1127 + 1128 + return ext 1129 + | (((insn >> 11) & 0xf) << 16) 1130 + | (((insn >> 17) & 0xf) << 12) 1131 + | (((insn >> 16) & 0x1) << 11) 1132 + | (insn & 0x7ff); 1133 + } 1134 + 1135 + /* The 2-bit L field in a SYNC or WC field in a WAIT instruction. 1136 + For SYNC, some L values are reserved: 1137 + * Value 3 is reserved on newer server cpus. 1138 + * Values 2 and 3 are reserved on all other cpus. */ 1139 + 1140 + static unsigned long 1141 + insert_ls (unsigned long insn, 1142 + long value, 1143 + ppc_cpu_t dialect, 1144 + const char **errmsg) 1145 + { 1146 + /* For SYNC, some L values are illegal. */ 1147 + if (((insn >> 1) & 0x3ff) == 598) 1148 + { 1149 + long max_lvalue = (dialect & PPC_OPCODE_POWER4) ? 2 : 1; 1150 + if (value > max_lvalue) 1151 + { 1152 + *errmsg = _("illegal L operand value"); 1153 + return insn; 1154 + } 1155 + } 1156 + 1157 + return insn | ((value & 0x3) << 21); 1158 + } 1159 + 1160 + /* The 4-bit E field in a sync instruction that accepts 2 operands. 1161 + If ESYNC is non-zero, then the L field must be either 0 or 1 and 1162 + the complement of ESYNC-bit2. */ 1163 + 1164 + static unsigned long 1165 + insert_esync (unsigned long insn, 1166 + long value, 1167 + ppc_cpu_t dialect, 1168 + const char **errmsg) 1169 + { 1170 + unsigned long ls = (insn >> 21) & 0x03; 1171 + 1172 + if (value == 0) 1173 + { 1174 + if (((dialect & PPC_OPCODE_E6500) != 0 && ls > 1) 1175 + || ((dialect & PPC_OPCODE_POWER9) != 0 && ls > 2)) 1176 + *errmsg = _("illegal L operand value"); 1177 + return insn; 1178 + } 1179 + 1180 + if ((ls & ~0x1) 1181 + || (((value >> 1) & 0x1) ^ ls) == 0) 1182 + *errmsg = _("incompatible L operand value"); 1183 + 1184 + return insn | ((value & 0xf) << 16); 1510 1185 } 1511 1186 1512 1187 /* The MB and ME fields in an M form instruction expressed as a single ··· 1572 1137 static unsigned long 1573 1138 insert_mbe (unsigned long insn, 1574 1139 long value, 1575 - int dialect ATTRIBUTE_UNUSED, 1140 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1576 1141 const char **errmsg) 1577 1142 { 1578 1143 unsigned long uval, mask; ··· 1624 1189 1625 1190 static long 1626 1191 extract_mbe (unsigned long insn, 1627 - int dialect ATTRIBUTE_UNUSED, 1192 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1628 1193 int *invalid) 1629 1194 { 1630 1195 long ret; ··· 1658 1223 static unsigned long 1659 1224 insert_mb6 (unsigned long insn, 1660 1225 long value, 1661 - int dialect ATTRIBUTE_UNUSED, 1226 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1662 1227 const char **errmsg ATTRIBUTE_UNUSED) 1663 1228 { 1664 1229 return insn | ((value & 0x1f) << 6) | (value & 0x20); ··· 1666 1231 1667 1232 static long 1668 1233 extract_mb6 (unsigned long insn, 1669 - int dialect ATTRIBUTE_UNUSED, 1234 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1670 1235 int *invalid ATTRIBUTE_UNUSED) 1671 1236 { 1672 1237 return ((insn >> 6) & 0x1f) | (insn & 0x20); ··· 1675 1240 /* The NB field in an X form instruction. The value 32 is stored as 1676 1241 0. */ 1677 1242 1678 - static unsigned long 1679 - insert_nb (unsigned long insn, 1680 - long value, 1681 - int dialect ATTRIBUTE_UNUSED, 1682 - const char **errmsg) 1683 - { 1684 - if (value < 0 || value > 32) 1685 - *errmsg = _("value out of range"); 1686 - if (value == 32) 1687 - value = 0; 1688 - return insn | ((value & 0x1f) << 11); 1689 - } 1690 - 1691 1243 static long 1692 1244 extract_nb (unsigned long insn, 1693 - int dialect ATTRIBUTE_UNUSED, 1245 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1694 1246 int *invalid ATTRIBUTE_UNUSED) 1695 1247 { 1696 1248 long ret; ··· 1688 1266 return ret; 1689 1267 } 1690 1268 1269 + /* The NB field in an lswi instruction, which has special value 1270 + restrictions. The value 32 is stored as 0. */ 1271 + 1272 + static unsigned long 1273 + insert_nbi (unsigned long insn, 1274 + long value, 1275 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1276 + const char **errmsg ATTRIBUTE_UNUSED) 1277 + { 1278 + long rtvalue = (insn & RT_MASK) >> 21; 1279 + long ravalue = (insn & RA_MASK) >> 16; 1280 + 1281 + if (value == 0) 1282 + value = 32; 1283 + if (rtvalue + (value + 3) / 4 > (rtvalue > ravalue ? ravalue + 32 1284 + : ravalue)) 1285 + *errmsg = _("address register in load range"); 1286 + return insn | ((value & 0x1f) << 11); 1287 + } 1288 + 1691 1289 /* The NSI field in a D form instruction. This is the same as the SI 1692 1290 field, only negated. The extraction function always marks it as 1693 1291 invalid, since we never want to recognize an instruction which uses ··· 1716 1274 static unsigned long 1717 1275 insert_nsi (unsigned long insn, 1718 1276 long value, 1719 - int dialect ATTRIBUTE_UNUSED, 1277 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1720 1278 const char **errmsg ATTRIBUTE_UNUSED) 1721 1279 { 1722 1280 return insn | (-value & 0xffff); ··· 1724 1282 1725 1283 static long 1726 1284 extract_nsi (unsigned long insn, 1727 - int dialect ATTRIBUTE_UNUSED, 1285 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1728 1286 int *invalid) 1729 1287 { 1730 1288 *invalid = 1; ··· 1738 1296 static unsigned long 1739 1297 insert_ral (unsigned long insn, 1740 1298 long value, 1741 - int dialect ATTRIBUTE_UNUSED, 1299 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1742 1300 const char **errmsg) 1743 1301 { 1744 1302 if (value == 0 ··· 1753 1311 static unsigned long 1754 1312 insert_ram (unsigned long insn, 1755 1313 long value, 1756 - int dialect ATTRIBUTE_UNUSED, 1314 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1757 1315 const char **errmsg) 1758 1316 { 1759 1317 if ((unsigned long) value >= ((insn >> 21) & 0x1f)) ··· 1761 1319 return insn | ((value & 0x1f) << 16); 1762 1320 } 1763 1321 1764 - /* The RA field in the DQ form lq instruction, which has special 1322 + /* The RA field in the DQ form lq or an lswx instruction, which have special 1765 1323 value restrictions. */ 1766 1324 1767 1325 static unsigned long 1768 1326 insert_raq (unsigned long insn, 1769 1327 long value, 1770 - int dialect ATTRIBUTE_UNUSED, 1328 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1771 1329 const char **errmsg) 1772 1330 { 1773 1331 long rtvalue = (insn & RT_MASK) >> 21; ··· 1784 1342 static unsigned long 1785 1343 insert_ras (unsigned long insn, 1786 1344 long value, 1787 - int dialect ATTRIBUTE_UNUSED, 1345 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1788 1346 const char **errmsg) 1789 1347 { 1790 1348 if (value == 0) ··· 1801 1359 static unsigned long 1802 1360 insert_rbs (unsigned long insn, 1803 1361 long value ATTRIBUTE_UNUSED, 1804 - int dialect ATTRIBUTE_UNUSED, 1362 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1805 1363 const char **errmsg ATTRIBUTE_UNUSED) 1806 1364 { 1807 1365 return insn | (((insn >> 21) & 0x1f) << 11); ··· 1809 1367 1810 1368 static long 1811 1369 extract_rbs (unsigned long insn, 1812 - int dialect ATTRIBUTE_UNUSED, 1370 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1813 1371 int *invalid) 1814 1372 { 1815 1373 if (((insn >> 21) & 0x1f) != ((insn >> 11) & 0x1f)) ··· 1817 1375 return 0; 1818 1376 } 1819 1377 1820 - /* The RT field of the DQ form lq instruction, which has special 1821 - value restrictions. */ 1378 + /* The RB field in an lswx instruction, which has special value 1379 + restrictions. */ 1822 1380 1823 1381 static unsigned long 1824 - insert_rtq (unsigned long insn, 1382 + insert_rbx (unsigned long insn, 1825 1383 long value, 1826 - int dialect ATTRIBUTE_UNUSED, 1384 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1827 1385 const char **errmsg) 1828 1386 { 1829 - if ((value & 1) != 0) 1830 - *errmsg = _("target register operand must be even"); 1831 - return insn | ((value & 0x1f) << 21); 1387 + long rtvalue = (insn & RT_MASK) >> 21; 1388 + 1389 + if (value == rtvalue) 1390 + *errmsg = _("source and target register operands must be different"); 1391 + return insn | ((value & 0x1f) << 11); 1832 1392 } 1833 1393 1834 - /* The RS field of the DS form stq instruction, which has special 1835 - value restrictions. */ 1394 + /* The SCI8 field is made up of SCL and {U,N}I8 fields. */ 1395 + static unsigned long 1396 + insert_sci8 (unsigned long insn, 1397 + long value, 1398 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1399 + const char **errmsg) 1400 + { 1401 + unsigned int fill_scale = 0; 1402 + unsigned long ui8 = value; 1403 + 1404 + if ((ui8 & 0xffffff00) == 0) 1405 + ; 1406 + else if ((ui8 & 0xffffff00) == 0xffffff00) 1407 + fill_scale = 0x400; 1408 + else if ((ui8 & 0xffff00ff) == 0) 1409 + { 1410 + fill_scale = 1 << 8; 1411 + ui8 >>= 8; 1412 + } 1413 + else if ((ui8 & 0xffff00ff) == 0xffff00ff) 1414 + { 1415 + fill_scale = 0x400 | (1 << 8); 1416 + ui8 >>= 8; 1417 + } 1418 + else if ((ui8 & 0xff00ffff) == 0) 1419 + { 1420 + fill_scale = 2 << 8; 1421 + ui8 >>= 16; 1422 + } 1423 + else if ((ui8 & 0xff00ffff) == 0xff00ffff) 1424 + { 1425 + fill_scale = 0x400 | (2 << 8); 1426 + ui8 >>= 16; 1427 + } 1428 + else if ((ui8 & 0x00ffffff) == 0) 1429 + { 1430 + fill_scale = 3 << 8; 1431 + ui8 >>= 24; 1432 + } 1433 + else if ((ui8 & 0x00ffffff) == 0x00ffffff) 1434 + { 1435 + fill_scale = 0x400 | (3 << 8); 1436 + ui8 >>= 24; 1437 + } 1438 + else 1439 + { 1440 + *errmsg = _("illegal immediate value"); 1441 + ui8 = 0; 1442 + } 1443 + 1444 + return insn | fill_scale | (ui8 & 0xff); 1445 + } 1446 + 1447 + static long 1448 + extract_sci8 (unsigned long insn, 1449 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1450 + int *invalid ATTRIBUTE_UNUSED) 1451 + { 1452 + int fill = insn & 0x400; 1453 + int scale_factor = (insn & 0x300) >> 5; 1454 + long value = (insn & 0xff) << scale_factor; 1455 + 1456 + if (fill != 0) 1457 + value |= ~((long) 0xff << scale_factor); 1458 + return value; 1459 + } 1836 1460 1837 1461 static unsigned long 1838 - insert_rsq (unsigned long insn, 1839 - long value ATTRIBUTE_UNUSED, 1840 - int dialect ATTRIBUTE_UNUSED, 1841 - const char **errmsg) 1462 + insert_sci8n (unsigned long insn, 1463 + long value, 1464 + ppc_cpu_t dialect, 1465 + const char **errmsg) 1842 1466 { 1843 - if ((value & 1) != 0) 1844 - *errmsg = _("source register operand must be even"); 1845 - return insn | ((value & 0x1f) << 21); 1467 + return insert_sci8 (insn, -value, dialect, errmsg); 1468 + } 1469 + 1470 + static long 1471 + extract_sci8n (unsigned long insn, 1472 + ppc_cpu_t dialect, 1473 + int *invalid) 1474 + { 1475 + return -extract_sci8 (insn, dialect, invalid); 1476 + } 1477 + 1478 + static unsigned long 1479 + insert_sd4h (unsigned long insn, 1480 + long value, 1481 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1482 + const char **errmsg ATTRIBUTE_UNUSED) 1483 + { 1484 + return insn | ((value & 0x1e) << 7); 1485 + } 1486 + 1487 + static long 1488 + extract_sd4h (unsigned long insn, 1489 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1490 + int *invalid ATTRIBUTE_UNUSED) 1491 + { 1492 + return ((insn >> 8) & 0xf) << 1; 1493 + } 1494 + 1495 + static unsigned long 1496 + insert_sd4w (unsigned long insn, 1497 + long value, 1498 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1499 + const char **errmsg ATTRIBUTE_UNUSED) 1500 + { 1501 + return insn | ((value & 0x3c) << 6); 1502 + } 1503 + 1504 + static long 1505 + extract_sd4w (unsigned long insn, 1506 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1507 + int *invalid ATTRIBUTE_UNUSED) 1508 + { 1509 + return ((insn >> 8) & 0xf) << 2; 1510 + } 1511 + 1512 + static unsigned long 1513 + insert_oimm (unsigned long insn, 1514 + long value, 1515 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1516 + const char **errmsg ATTRIBUTE_UNUSED) 1517 + { 1518 + return insn | (((value - 1) & 0x1f) << 4); 1519 + } 1520 + 1521 + static long 1522 + extract_oimm (unsigned long insn, 1523 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1524 + int *invalid ATTRIBUTE_UNUSED) 1525 + { 1526 + return ((insn >> 4) & 0x1f) + 1; 1846 1527 } 1847 1528 1848 1529 /* The SH field in an MD form instruction. This is split. */ ··· 1973 1408 static unsigned long 1974 1409 insert_sh6 (unsigned long insn, 1975 1410 long value, 1976 - int dialect ATTRIBUTE_UNUSED, 1411 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1977 1412 const char **errmsg ATTRIBUTE_UNUSED) 1978 1413 { 1979 - return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4); 1414 + /* SH6 operand in the rldixor instructions. */ 1415 + if (PPC_OP (insn) == 4) 1416 + return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 5); 1417 + else 1418 + return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4); 1980 1419 } 1981 1420 1982 1421 static long 1983 1422 extract_sh6 (unsigned long insn, 1984 - int dialect ATTRIBUTE_UNUSED, 1423 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1985 1424 int *invalid ATTRIBUTE_UNUSED) 1986 1425 { 1987 - return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20); 1426 + /* SH6 operand in the rldixor instructions. */ 1427 + if (PPC_OP (insn) == 4) 1428 + return ((insn >> 6) & 0x1f) | ((insn << 5) & 0x20); 1429 + else 1430 + return ((insn >> 11) & 0x1f) | ((insn << 4) & 0x20); 1988 1431 } 1989 1432 1990 1433 /* The SPR field in an XFX form instruction. This is flipped--the ··· 2001 1428 static unsigned long 2002 1429 insert_spr (unsigned long insn, 2003 1430 long value, 2004 - int dialect ATTRIBUTE_UNUSED, 1431 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 2005 1432 const char **errmsg ATTRIBUTE_UNUSED) 2006 1433 { 2007 1434 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6); ··· 2009 1436 2010 1437 static long 2011 1438 extract_spr (unsigned long insn, 2012 - int dialect ATTRIBUTE_UNUSED, 1439 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 2013 1440 int *invalid ATTRIBUTE_UNUSED) 2014 1441 { 2015 1442 return ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0); 2016 1443 } 2017 1444 2018 1445 /* Some dialects have 8 SPRG registers instead of the standard 4. */ 1446 + #define ALLOW8_SPRG (PPC_OPCODE_BOOKE | PPC_OPCODE_405) 2019 1447 2020 1448 static unsigned long 2021 1449 insert_sprg (unsigned long insn, 2022 1450 long value, 2023 - int dialect, 1451 + ppc_cpu_t dialect, 2024 1452 const char **errmsg) 2025 1453 { 2026 - /* This check uses PPC_OPCODE_403 because PPC405 is later defined 2027 - as a synonym. If ever a 405 specific dialect is added this 2028 - check should use that instead. */ 2029 1454 if (value > 7 2030 - || (value > 3 2031 - && (dialect & (PPC_OPCODE_BOOKE | PPC_OPCODE_403)) == 0)) 1455 + || (value > 3 && (dialect & ALLOW8_SPRG) == 0)) 2032 1456 *errmsg = _("invalid sprg number"); 2033 1457 2034 1458 /* If this is mfsprg4..7 then use spr 260..263 which can be read in ··· 2038 1468 2039 1469 static long 2040 1470 extract_sprg (unsigned long insn, 2041 - int dialect, 1471 + ppc_cpu_t dialect, 2042 1472 int *invalid) 2043 1473 { 2044 1474 unsigned long val = (insn >> 16) & 0x1f; 2045 1475 2046 1476 /* mfsprg can use 260..263 and 272..279. mtsprg only uses spr 272..279 2047 - If not BOOKE or 405, then both use only 272..275. */ 2048 - if (val <= 3 2049 - || (val < 0x10 && (insn & 0x100) != 0) 2050 - || (val - 0x10 > 3 2051 - && (dialect & (PPC_OPCODE_BOOKE | PPC_OPCODE_403)) == 0)) 1477 + If not BOOKE, 405 or VLE, then both use only 272..275. */ 1478 + if ((val - 0x10 > 3 && (dialect & ALLOW8_SPRG) == 0) 1479 + || (val - 0x10 > 7 && (insn & 0x100) != 0) 1480 + || val <= 3 1481 + || (val & 8) != 0) 2052 1482 *invalid = 1; 2053 1483 return val & 7; 2054 1484 } 2055 1485 2056 1486 /* The TBR field in an XFX instruction. This is just like SPR, but it 2057 - is optional. When TBR is omitted, it must be inserted as 268 (the 2058 - magic number of the TB register). These functions treat 0 2059 - (indicating an omitted optional operand) as 268. This means that 2060 - ``mftb 4,0'' is not handled correctly. This does not matter very 2061 - much, since the architecture manual does not define mftb as 2062 - accepting any values other than 268 or 269. */ 2063 - 2064 - #define TB (268) 1487 + is optional. */ 2065 1488 2066 1489 static unsigned long 2067 1490 insert_tbr (unsigned long insn, 2068 1491 long value, 2069 - int dialect ATTRIBUTE_UNUSED, 2070 - const char **errmsg ATTRIBUTE_UNUSED) 1492 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1493 + const char **errmsg) 2071 1494 { 2072 - if (value == 0) 2073 - value = TB; 1495 + if (value != 268 && value != 269) 1496 + *errmsg = _("invalid tbr number"); 2074 1497 return insn | ((value & 0x1f) << 16) | ((value & 0x3e0) << 6); 2075 1498 } 2076 1499 2077 1500 static long 2078 1501 extract_tbr (unsigned long insn, 2079 - int dialect ATTRIBUTE_UNUSED, 2080 - int *invalid ATTRIBUTE_UNUSED) 1502 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1503 + int *invalid) 2081 1504 { 2082 1505 long ret; 2083 1506 2084 1507 ret = ((insn >> 16) & 0x1f) | ((insn >> 6) & 0x3e0); 2085 - if (ret == TB) 2086 - ret = 0; 1508 + if (ret != 268 && ret != 269) 1509 + *invalid = 1; 2087 1510 return ret; 2088 1511 } 1512 + 1513 + /* The XT and XS fields in an XX1 or XX3 form instruction. This is split. */ 1514 + 1515 + static unsigned long 1516 + insert_xt6 (unsigned long insn, 1517 + long value, 1518 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1519 + const char **errmsg ATTRIBUTE_UNUSED) 1520 + { 1521 + return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 5); 1522 + } 1523 + 1524 + static long 1525 + extract_xt6 (unsigned long insn, 1526 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1527 + int *invalid ATTRIBUTE_UNUSED) 1528 + { 1529 + return ((insn << 5) & 0x20) | ((insn >> 21) & 0x1f); 1530 + } 1531 + 1532 + /* The XT and XS fields in an DQ form VSX instruction. This is split. */ 1533 + static unsigned long 1534 + insert_xtq6 (unsigned long insn, 1535 + long value, 1536 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1537 + const char **errmsg ATTRIBUTE_UNUSED) 1538 + { 1539 + return insn | ((value & 0x1f) << 21) | ((value & 0x20) >> 2); 1540 + } 1541 + 1542 + static long 1543 + extract_xtq6 (unsigned long insn, 1544 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1545 + int *invalid ATTRIBUTE_UNUSED) 1546 + { 1547 + return ((insn << 2) & 0x20) | ((insn >> 21) & 0x1f); 1548 + } 1549 + 1550 + /* The XA field in an XX3 form instruction. This is split. */ 1551 + 1552 + static unsigned long 1553 + insert_xa6 (unsigned long insn, 1554 + long value, 1555 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1556 + const char **errmsg ATTRIBUTE_UNUSED) 1557 + { 1558 + return insn | ((value & 0x1f) << 16) | ((value & 0x20) >> 3); 1559 + } 1560 + 1561 + static long 1562 + extract_xa6 (unsigned long insn, 1563 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1564 + int *invalid ATTRIBUTE_UNUSED) 1565 + { 1566 + return ((insn << 3) & 0x20) | ((insn >> 16) & 0x1f); 1567 + } 1568 + 1569 + /* The XB field in an XX3 form instruction. This is split. */ 1570 + 1571 + static unsigned long 1572 + insert_xb6 (unsigned long insn, 1573 + long value, 1574 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1575 + const char **errmsg ATTRIBUTE_UNUSED) 1576 + { 1577 + return insn | ((value & 0x1f) << 11) | ((value & 0x20) >> 4); 1578 + } 1579 + 1580 + static long 1581 + extract_xb6 (unsigned long insn, 1582 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1583 + int *invalid ATTRIBUTE_UNUSED) 1584 + { 1585 + return ((insn << 4) & 0x20) | ((insn >> 11) & 0x1f); 1586 + } 1587 + 1588 + /* The XB field in an XX3 form instruction when it must be the same as 1589 + the XA field in the instruction. This is used for extended 1590 + mnemonics like xvmovdp. This operand is marked FAKE. The insertion 1591 + function just copies the XA field into the XB field, and the 1592 + extraction function just checks that the fields are the same. */ 1593 + 1594 + static unsigned long 1595 + insert_xb6s (unsigned long insn, 1596 + long value ATTRIBUTE_UNUSED, 1597 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1598 + const char **errmsg ATTRIBUTE_UNUSED) 1599 + { 1600 + return insn | (((insn >> 16) & 0x1f) << 11) | (((insn >> 2) & 0x1) << 1); 1601 + } 1602 + 1603 + static long 1604 + extract_xb6s (unsigned long insn, 1605 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1606 + int *invalid) 1607 + { 1608 + if ((((insn >> 16) & 0x1f) != ((insn >> 11) & 0x1f)) 1609 + || (((insn >> 2) & 0x1) != ((insn >> 1) & 0x1))) 1610 + *invalid = 1; 1611 + return 0; 1612 + } 1613 + 1614 + /* The XC field in an XX4 form instruction. This is split. */ 1615 + 1616 + static unsigned long 1617 + insert_xc6 (unsigned long insn, 1618 + long value, 1619 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1620 + const char **errmsg ATTRIBUTE_UNUSED) 1621 + { 1622 + return insn | ((value & 0x1f) << 6) | ((value & 0x20) >> 2); 1623 + } 1624 + 1625 + static long 1626 + extract_xc6 (unsigned long insn, 1627 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1628 + int *invalid ATTRIBUTE_UNUSED) 1629 + { 1630 + return ((insn << 2) & 0x20) | ((insn >> 6) & 0x1f); 1631 + } 1632 + 1633 + static unsigned long 1634 + insert_dm (unsigned long insn, 1635 + long value, 1636 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1637 + const char **errmsg) 1638 + { 1639 + if (value != 0 && value != 1) 1640 + *errmsg = _("invalid constant"); 1641 + return insn | (((value) ? 3 : 0) << 8); 1642 + } 1643 + 1644 + static long 1645 + extract_dm (unsigned long insn, 1646 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1647 + int *invalid) 1648 + { 1649 + long value; 1650 + 1651 + value = (insn >> 8) & 3; 1652 + if (value != 0 && value != 3) 1653 + *invalid = 1; 1654 + return (value) ? 1 : 0; 1655 + } 1656 + 1657 + /* The VLESIMM field in an I16A form instruction. This is split. */ 1658 + 1659 + static unsigned long 1660 + insert_vlesi (unsigned long insn, 1661 + long value, 1662 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1663 + const char **errmsg ATTRIBUTE_UNUSED) 1664 + { 1665 + return insn | ((value & 0xf800) << 10) | (value & 0x7ff); 1666 + } 1667 + 1668 + static long 1669 + extract_vlesi (unsigned long insn, 1670 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1671 + int *invalid ATTRIBUTE_UNUSED) 1672 + { 1673 + long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff); 1674 + value = (value ^ 0x8000) - 0x8000; 1675 + return value; 1676 + } 1677 + 1678 + static unsigned long 1679 + insert_vlensi (unsigned long insn, 1680 + long value, 1681 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1682 + const char **errmsg ATTRIBUTE_UNUSED) 1683 + { 1684 + value = -value; 1685 + return insn | ((value & 0xf800) << 10) | (value & 0x7ff); 1686 + } 1687 + static long 1688 + extract_vlensi (unsigned long insn, 1689 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1690 + int *invalid ATTRIBUTE_UNUSED) 1691 + { 1692 + long value = ((insn >> 10) & 0xf800) | (insn & 0x7ff); 1693 + value = (value ^ 0x8000) - 0x8000; 1694 + /* Don't use for disassembly. */ 1695 + *invalid = 1; 1696 + return -value; 1697 + } 1698 + 1699 + /* The VLEUIMM field in an I16A form instruction. This is split. */ 1700 + 1701 + static unsigned long 1702 + insert_vleui (unsigned long insn, 1703 + long value, 1704 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1705 + const char **errmsg ATTRIBUTE_UNUSED) 1706 + { 1707 + return insn | ((value & 0xf800) << 10) | (value & 0x7ff); 1708 + } 1709 + 1710 + static long 1711 + extract_vleui (unsigned long insn, 1712 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1713 + int *invalid ATTRIBUTE_UNUSED) 1714 + { 1715 + return ((insn >> 10) & 0xf800) | (insn & 0x7ff); 1716 + } 1717 + 1718 + /* The VLEUIMML field in an I16L form instruction. This is split. */ 1719 + 1720 + static unsigned long 1721 + insert_vleil (unsigned long insn, 1722 + long value, 1723 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1724 + const char **errmsg ATTRIBUTE_UNUSED) 1725 + { 1726 + return insn | ((value & 0xf800) << 5) | (value & 0x7ff); 1727 + } 1728 + 1729 + static long 1730 + extract_vleil (unsigned long insn, 1731 + ppc_cpu_t dialect ATTRIBUTE_UNUSED, 1732 + int *invalid ATTRIBUTE_UNUSED) 1733 + { 1734 + return ((insn >> 5) & 0xf800) | (insn & 0x7ff); 1735 + } 1736 + 2089 1737 2090 1738 /* Macros used to form opcodes. */ 2091 1739 ··· 2322 1534 the comparison instructions. */ 2323 1535 #define OPL(x,l) (OP (x) | ((((unsigned long)(l)) & 1) << 21)) 2324 1536 #define OPL_MASK OPL (0x3f,1) 1537 + 1538 + /* The main opcode combined with an update code in D form instruction. 1539 + Used for extended mnemonics for VLE memory instructions. */ 1540 + #define OPVUP(x,vup) (OP (x) | ((((unsigned long)(vup)) & 0xff) << 8)) 1541 + #define OPVUP_MASK OPVUP (0x3f, 0xff) 1542 + 1543 + /* The main opcode combined with an update code and the RT fields specified in 1544 + D form instruction. Used for VLE volatile context save/restore 1545 + instructions. */ 1546 + #define OPVUPRT(x,vup,rt) (OPVUP (x, vup) | ((((unsigned long)(rt)) & 0x1f) << 21)) 1547 + #define OPVUPRT_MASK OPVUPRT (0x3f, 0xff, 0x1f) 2325 1548 2326 1549 /* An A form instruction. */ 2327 1550 #define A(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1) | (((unsigned long)(rc)) & 1)) ··· 2354 1555 #define B(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 1) | ((lk) & 1)) 2355 1556 #define B_MASK B (0x3f, 1, 1) 2356 1557 1558 + /* A BD8 form instruction. This is a 16-bit instruction. */ 1559 + #define BD8(op, aa, lk) (((((unsigned long)(op)) & 0x3f) << 10) | (((aa) & 1) << 9) | (((lk) & 1) << 8)) 1560 + #define BD8_MASK BD8 (0x3f, 1, 1) 1561 + 1562 + /* Another BD8 form instruction. This is a 16-bit instruction. */ 1563 + #define BD8IO(op) ((((unsigned long)(op)) & 0x1f) << 11) 1564 + #define BD8IO_MASK BD8IO (0x1f) 1565 + 1566 + /* A BD8 form instruction for simplified mnemonics. */ 1567 + #define EBD8IO(op, bo, bi) (BD8IO ((op)) | ((bo) << 10) | ((bi) << 8)) 1568 + /* A mask that excludes BO32 and BI32. */ 1569 + #define EBD8IO1_MASK 0xf800 1570 + /* A mask that includes BO32 and excludes BI32. */ 1571 + #define EBD8IO2_MASK 0xfc00 1572 + /* A mask that include BO32 AND BI32. */ 1573 + #define EBD8IO3_MASK 0xff00 1574 + 1575 + /* A BD15 form instruction. */ 1576 + #define BD15(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 0xf) << 22) | ((lk) & 1)) 1577 + #define BD15_MASK BD15 (0x3f, 0xf, 1) 1578 + 1579 + /* A BD15 form instruction for extended conditional branch mnemonics. */ 1580 + #define EBD15(op, aa, bo, lk) (((op) & 0x3f) << 26) | (((aa) & 0xf) << 22) | (((bo) & 0x3) << 20) | ((lk) & 1) 1581 + #define EBD15_MASK 0xfff00001 1582 + 1583 + /* A BD15 form instruction for extended conditional branch mnemonics with BI. */ 1584 + #define EBD15BI(op, aa, bo, bi, lk) (((op) & 0x3f) << 26) \ 1585 + | (((aa) & 0xf) << 22) \ 1586 + | (((bo) & 0x3) << 20) \ 1587 + | (((bi) & 0x3) << 16) \ 1588 + | ((lk) & 1) 1589 + #define EBD15BI_MASK 0xfff30001 1590 + 1591 + /* A BD24 form instruction. */ 1592 + #define BD24(op, aa, lk) (OP (op) | ((((unsigned long)(aa)) & 1) << 25) | ((lk) & 1)) 1593 + #define BD24_MASK BD24 (0x3f, 1, 1) 1594 + 2357 1595 /* A B form instruction setting the BO field. */ 2358 1596 #define BBO(op, bo, aa, lk) (B ((op), (aa), (lk)) | ((((unsigned long)(bo)) & 0x1f) << 21)) 2359 1597 #define BBO_MASK BBO (0x3f, 0x1f, 1, 1) ··· 2398 1562 /* A BBO_MASK with the y bit of the BO field removed. This permits 2399 1563 matching a conditional branch regardless of the setting of the y 2400 1564 bit. Similarly for the 'at' bits used for power4 branch hints. */ 2401 - #define Y_MASK (((unsigned long) 1) << 21) 1565 + #define Y_MASK (((unsigned long) 1) << 21) 2402 1566 #define AT1_MASK (((unsigned long) 3) << 21) 2403 1567 #define AT2_MASK (((unsigned long) 9) << 21) 2404 1568 #define BBOY_MASK (BBO_MASK &~ Y_MASK) ··· 2419 1583 #define BBOYBI_MASK (BBOYCB_MASK | BI_MASK) 2420 1584 #define BBOATBI_MASK (BBOAT2CB_MASK | BI_MASK) 2421 1585 1586 + /* A VLE C form instruction. */ 1587 + #define C_LK(x, lk) (((((unsigned long)(x)) & 0x7fff) << 1) | ((lk) & 1)) 1588 + #define C_LK_MASK C_LK(0x7fff, 1) 1589 + #define C(x) ((((unsigned long)(x)) & 0xffff)) 1590 + #define C_MASK C(0xffff) 1591 + 2422 1592 /* An Context form instruction. */ 2423 1593 #define CTX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7)) 2424 1594 #define CTX_MASK CTX(0x3f, 0x7) ··· 2436 1594 /* The main opcode mask with the RA field clear. */ 2437 1595 #define DRA_MASK (OP_MASK | RA_MASK) 2438 1596 1597 + /* A DQ form VSX instruction. */ 1598 + #define DQX(op, xop) (OP (op) | ((xop) & 0x7)) 1599 + #define DQX_MASK DQX (0x3f, 7) 1600 + 2439 1601 /* A DS form instruction. */ 2440 1602 #define DSO(op, xop) (OP (op) | ((xop) & 0x3)) 2441 1603 #define DS_MASK DSO (0x3f, 3) 2442 1604 2443 - /* A DE form instruction. */ 2444 - #define DEO(op, xop) (OP (op) | ((xop) & 0xf)) 2445 - #define DE_MASK DEO (0x3e, 0xf) 1605 + /* An DX form instruction. */ 1606 + #define DX(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1)) 1607 + #define DX_MASK DX (0x3f, 0x1f) 2446 1608 2447 1609 /* An EVSEL form instruction. */ 2448 1610 #define EVSEL(op, xop) (OP (op) | (((unsigned long)(xop)) & 0xff) << 3) 2449 1611 #define EVSEL_MASK EVSEL(0x3f, 0xff) 2450 1612 1613 + /* An IA16 form instruction. */ 1614 + #define IA16(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11) 1615 + #define IA16_MASK IA16(0x3f, 0x1f) 1616 + 1617 + /* An I16A form instruction. */ 1618 + #define I16A(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11) 1619 + #define I16A_MASK I16A(0x3f, 0x1f) 1620 + 1621 + /* An I16L form instruction. */ 1622 + #define I16L(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f) << 11) 1623 + #define I16L_MASK I16L(0x3f, 0x1f) 1624 + 1625 + /* An IM7 form instruction. */ 1626 + #define IM7(op) ((((unsigned long)(op)) & 0x1f) << 11) 1627 + #define IM7_MASK IM7(0x1f) 1628 + 2451 1629 /* An M form instruction. */ 2452 1630 #define M(op, rc) (OP (op) | ((rc) & 1)) 2453 1631 #define M_MASK M (0x3f, 1) 1632 + 1633 + /* An LI20 form instruction. */ 1634 + #define LI20(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1) << 15) 1635 + #define LI20_MASK LI20(0x3f, 0x1) 2454 1636 2455 1637 /* An M form instruction with the ME field specified. */ 2456 1638 #define MME(op, me, rc) (M ((op), (rc)) | ((((unsigned long)(me)) & 0x1f) << 1)) ··· 2506 1640 #define SC(op, sa, lk) (OP (op) | ((((unsigned long)(sa)) & 1) << 1) | ((lk) & 1)) 2507 1641 #define SC_MASK (OP_MASK | (((unsigned long)0x3ff) << 16) | (((unsigned long)1) << 1) | 1) 2508 1642 2509 - /* An VX form instruction. */ 1643 + /* An SCI8 form instruction. */ 1644 + #define SCI8(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 11)) 1645 + #define SCI8_MASK SCI8(0x3f, 0x1f) 1646 + 1647 + /* An SCI8 form instruction. */ 1648 + #define SCI8BF(op, fop, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 11) | (((fop) & 7) << 23)) 1649 + #define SCI8BF_MASK SCI8BF(0x3f, 7, 0x1f) 1650 + 1651 + /* An SD4 form instruction. This is a 16-bit instruction. */ 1652 + #define SD4(op) ((((unsigned long)(op)) & 0xf) << 12) 1653 + #define SD4_MASK SD4(0xf) 1654 + 1655 + /* An SE_IM5 form instruction. This is a 16-bit instruction. */ 1656 + #define SE_IM5(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x1) << 9)) 1657 + #define SE_IM5_MASK SE_IM5(0x3f, 1) 1658 + 1659 + /* An SE_R form instruction. This is a 16-bit instruction. */ 1660 + #define SE_R(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x3f) << 4)) 1661 + #define SE_R_MASK SE_R(0x3f, 0x3f) 1662 + 1663 + /* An SE_RR form instruction. This is a 16-bit instruction. */ 1664 + #define SE_RR(op, xop) (((((unsigned long)(op)) & 0x3f) << 10) | (((xop) & 0x3) << 8)) 1665 + #define SE_RR_MASK SE_RR(0x3f, 3) 1666 + 1667 + /* A VX form instruction. */ 2510 1668 #define VX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff)) 2511 1669 2512 1670 /* The mask for an VX form instruction. */ 2513 1671 #define VX_MASK VX(0x3f, 0x7ff) 2514 1672 2515 - /* An VA form instruction. */ 1673 + /* A VX_MASK with the VA field fixed. */ 1674 + #define VXVA_MASK (VX_MASK | (0x1f << 16)) 1675 + 1676 + /* A VX_MASK with the VB field fixed. */ 1677 + #define VXVB_MASK (VX_MASK | (0x1f << 11)) 1678 + 1679 + /* A VX_MASK with the VA and VB fields fixed. */ 1680 + #define VXVAVB_MASK (VX_MASK | (0x1f << 16) | (0x1f << 11)) 1681 + 1682 + /* A VX_MASK with the VD and VA fields fixed. */ 1683 + #define VXVDVA_MASK (VX_MASK | (0x1f << 21) | (0x1f << 16)) 1684 + 1685 + /* A VX_MASK with a UIMM4 field. */ 1686 + #define VXUIMM4_MASK (VX_MASK | (0x1 << 20)) 1687 + 1688 + /* A VX_MASK with a UIMM3 field. */ 1689 + #define VXUIMM3_MASK (VX_MASK | (0x3 << 19)) 1690 + 1691 + /* A VX_MASK with a UIMM2 field. */ 1692 + #define VXUIMM2_MASK (VX_MASK | (0x7 << 18)) 1693 + 1694 + /* A VX_MASK with a PS field. */ 1695 + #define VXPS_MASK (VX_MASK & ~(0x1 << 9)) 1696 + 1697 + /* A VX_MASK with the VA field fixed with a PS field. */ 1698 + #define VXVAPS_MASK ((VX_MASK | (0x1f << 16)) & ~(0x1 << 9)) 1699 + 1700 + /* A VA form instruction. */ 2516 1701 #define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x03f)) 2517 1702 2518 1703 /* The mask for an VA form instruction. */ 2519 1704 #define VXA_MASK VXA(0x3f, 0x3f) 2520 1705 2521 - /* An VXR form instruction. */ 1706 + /* A VXA_MASK with a SHB field. */ 1707 + #define VXASHB_MASK (VXA_MASK | (1 << 10)) 1708 + 1709 + /* A VXR form instruction. */ 2522 1710 #define VXR(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | (((unsigned long)(xop)) & 0x3ff)) 2523 1711 2524 1712 /* The mask for a VXR form instruction. */ 2525 1713 #define VXR_MASK VXR(0x3f, 0x3ff, 1) 2526 1714 1715 + /* A VX form instruction with a VA tertiary opcode. */ 1716 + #define VXVA(op, xop, vaop) (VX(op,xop) | (((vaop) & 0x1f) << 16)) 1717 + 1718 + #define VXASH(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1)) 1719 + #define VXASH_MASK VXASH (0x3f, 0x1f) 1720 + 2527 1721 /* An X form instruction. */ 2528 1722 #define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1)) 1723 + 1724 + /* A X form instruction for Quad-Precision FP Instructions. */ 1725 + #define XVA(op, xop, vaop) (X(op,xop) | (((vaop) & 0x1f) << 16)) 1726 + 1727 + /* An EX form instruction. */ 1728 + #define EX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff)) 1729 + 1730 + /* The mask for an EX form instruction. */ 1731 + #define EX_MASK EX (0x3f, 0x7ff) 1732 + 1733 + /* An XX2 form instruction. */ 1734 + #define XX2(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2)) 1735 + 1736 + /* A XX2 form instruction with the VA bits specified. */ 1737 + #define XX2VA(op, xop, vaop) (XX2(op,xop) | (((vaop) & 0x1f) << 16)) 1738 + 1739 + /* An XX3 form instruction. */ 1740 + #define XX3(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0xff) << 3)) 1741 + 1742 + /* An XX3 form instruction with the RC bit specified. */ 1743 + #define XX3RC(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | ((((unsigned long)(xop)) & 0x7f) << 3)) 1744 + 1745 + /* An XX4 form instruction. */ 1746 + #define XX4(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3) << 4)) 2529 1747 2530 1748 /* A Z form instruction. */ 2531 1749 #define Z(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1)) ··· 2617 1667 /* An X form instruction with the RC bit specified. */ 2618 1668 #define XRC(op, xop, rc) (X ((op), (xop)) | ((rc) & 1)) 2619 1669 1670 + /* A X form instruction for Quad-Precision FP Instructions with RC bit. */ 1671 + #define XVARC(op, xop, vaop, rc) (XVA ((op), (xop), (vaop)) | ((rc) & 1)) 1672 + 1673 + /* An X form instruction with the RA bits specified as two ops. */ 1674 + #define XMMF(op, xop, mop0, mop1) (X ((op), (xop)) | ((mop0) & 3) << 19 | ((mop1) & 7) << 16) 1675 + 2620 1676 /* A Z form instruction with the RC bit specified. */ 2621 1677 #define ZRC(op, xop, rc) (Z ((op), (xop)) | ((rc) & 1)) 2622 1678 2623 1679 /* The mask for an X form instruction. */ 2624 1680 #define X_MASK XRC (0x3f, 0x3ff, 1) 2625 1681 1682 + /* The mask for an X form instruction with the BF bits specified. */ 1683 + #define XBF_MASK (X_MASK | (3 << 21)) 1684 + 1685 + /* An X form wait instruction with everything filled in except the WC field. */ 1686 + #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK) 1687 + 1688 + /* The mask for an XX1 form instruction. */ 1689 + #define XX1_MASK X (0x3f, 0x3ff) 1690 + 1691 + /* An XX1_MASK with the RB field fixed. */ 1692 + #define XX1RB_MASK (XX1_MASK | RB_MASK) 1693 + 1694 + /* The mask for an XX2 form instruction. */ 1695 + #define XX2_MASK (XX2 (0x3f, 0x1ff) | (0x1f << 16)) 1696 + 1697 + /* The mask for an XX2 form instruction with the UIM bits specified. */ 1698 + #define XX2UIM_MASK (XX2 (0x3f, 0x1ff) | (7 << 18)) 1699 + 1700 + /* The mask for an XX2 form instruction with the 4 UIM bits specified. */ 1701 + #define XX2UIM4_MASK (XX2 (0x3f, 0x1ff) | (1 << 20)) 1702 + 1703 + /* The mask for an XX2 form instruction with the BF bits specified. */ 1704 + #define XX2BF_MASK (XX2_MASK | (3 << 21) | (1)) 1705 + 1706 + /* The mask for an XX2 form instruction with the BF and DCMX bits specified. */ 1707 + #define XX2BFD_MASK (XX2 (0x3f, 0x1ff) | 1) 1708 + 1709 + /* The mask for an XX2 form instruction with a split DCMX bits specified. */ 1710 + #define XX2DCMXS_MASK XX2 (0x3f, 0x1ee) 1711 + 1712 + /* The mask for an XX3 form instruction. */ 1713 + #define XX3_MASK XX3 (0x3f, 0xff) 1714 + 1715 + /* The mask for an XX3 form instruction with the BF bits specified. */ 1716 + #define XX3BF_MASK (XX3 (0x3f, 0xff) | (3 << 21) | (1)) 1717 + 1718 + /* The mask for an XX3 form instruction with the DM or SHW bits specified. */ 1719 + #define XX3DM_MASK (XX3 (0x3f, 0x1f) | (1 << 10)) 1720 + #define XX3SHW_MASK XX3DM_MASK 1721 + 1722 + /* The mask for an XX4 form instruction. */ 1723 + #define XX4_MASK XX4 (0x3f, 0x3) 1724 + 1725 + /* An X form wait instruction with everything filled in except the WC field. */ 1726 + #define XWC_MASK (XRC (0x3f, 0x3ff, 1) | (7 << 23) | RA_MASK | RB_MASK) 1727 + 1728 + /* The mask for an XMMF form instruction. */ 1729 + #define XMMF_MASK (XMMF (0x3f, 0x3ff, 3, 7) | (1)) 1730 + 2626 1731 /* The mask for a Z form instruction. */ 2627 1732 #define Z_MASK ZRC (0x3f, 0x1ff, 1) 1733 + #define Z2_MASK ZRC (0x3f, 0xff, 1) 2628 1734 2629 - /* An X_MASK with the RA field fixed. */ 1735 + /* An X_MASK with the RA/VA field fixed. */ 2630 1736 #define XRA_MASK (X_MASK | RA_MASK) 1737 + #define XVA_MASK XRA_MASK 1738 + 1739 + /* An XRA_MASK with the A_L/W field clear. */ 1740 + #define XWRA_MASK (XRA_MASK & ~((unsigned long) 1 << 16)) 1741 + #define XRLA_MASK XWRA_MASK 2631 1742 2632 1743 /* An X_MASK with the RB field fixed. */ 2633 1744 #define XRB_MASK (X_MASK | RB_MASK) ··· 2702 1691 /* An X_MASK with the RA and RB fields fixed. */ 2703 1692 #define XRARB_MASK (X_MASK | RA_MASK | RB_MASK) 2704 1693 1694 + /* An XBF_MASK with the RA and RB fields fixed. */ 1695 + #define XBFRARB_MASK (XBF_MASK | RA_MASK | RB_MASK) 1696 + 2705 1697 /* An XRARB_MASK, but with the L bit clear. */ 2706 1698 #define XRLARB_MASK (XRARB_MASK & ~((unsigned long) 1 << 16)) 1699 + 1700 + /* An XRARB_MASK, but with the L bits in a darn instruction clear. */ 1701 + #define XLRAND_MASK (XRARB_MASK & ~((unsigned long) 3 << 16)) 2707 1702 2708 1703 /* An X_MASK with the RT and RA fields fixed. */ 2709 1704 #define XRTRA_MASK (X_MASK | RT_MASK | RA_MASK) 2710 1705 1706 + /* An X_MASK with the RT and RB fields fixed. */ 1707 + #define XRTRB_MASK (X_MASK | RT_MASK | RB_MASK) 1708 + 2711 1709 /* An XRTRA_MASK, but with L bit clear. */ 2712 1710 #define XRTLRA_MASK (XRTRA_MASK & ~((unsigned long) 1 << 21)) 2713 1711 1712 + /* An X_MASK with the RT, RA and RB fields fixed. */ 1713 + #define XRTRARB_MASK (X_MASK | RT_MASK | RA_MASK | RB_MASK) 1714 + 1715 + /* An XRTRARB_MASK, but with L bit clear. */ 1716 + #define XRTLRARB_MASK (XRTRARB_MASK & ~((unsigned long) 1 << 21)) 1717 + 1718 + /* An XRTRARB_MASK, but with A bit clear. */ 1719 + #define XRTARARB_MASK (XRTRARB_MASK & ~((unsigned long) 1 << 25)) 1720 + 1721 + /* An XRTRARB_MASK, but with BF bits clear. */ 1722 + #define XRTBFRARB_MASK (XRTRARB_MASK & ~((unsigned long) 7 << 23)) 1723 + 2714 1724 /* An X form instruction with the L bit specified. */ 2715 1725 #define XOPL(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 1) << 21)) 1726 + 1727 + /* An X form instruction with the L bits specified. */ 1728 + #define XOPL2(op, xop, l) (X ((op), (xop)) | ((((unsigned long)(l)) & 3) << 21)) 1729 + 1730 + /* An X form instruction with the L bit and RC bit specified. */ 1731 + #define XRCL(op, xop, l, rc) (XRC ((op), (xop), (rc)) | ((((unsigned long)(l)) & 1) << 21)) 1732 + 1733 + /* An X form instruction with RT fields specified */ 1734 + #define XRT(op, xop, rt) (X ((op), (xop)) \ 1735 + | ((((unsigned long)(rt)) & 0x1f) << 21)) 1736 + 1737 + /* An X form instruction with RT and RA fields specified */ 1738 + #define XRTRA(op, xop, rt, ra) (X ((op), (xop)) \ 1739 + | ((((unsigned long)(rt)) & 0x1f) << 21) \ 1740 + | ((((unsigned long)(ra)) & 0x1f) << 16)) 2716 1741 2717 1742 /* The mask for an X form comparison instruction. */ 2718 1743 #define XCMP_MASK (X_MASK | (((unsigned long)1) << 22)) ··· 2771 1724 /* An X form sync instruction with everything filled in except the LS field. */ 2772 1725 #define XSYNC_MASK (0xff9fffff) 2773 1726 1727 + /* An X form sync instruction with everything filled in except the L and E fields. */ 1728 + #define XSYNCLE_MASK (0xff90ffff) 1729 + 2774 1730 /* An X_MASK, but with the EH bit clear. */ 2775 1731 #define XEH_MASK (X_MASK & ~((unsigned long )1)) 2776 1732 ··· 2783 1733 2784 1734 /* An XFL form instruction. */ 2785 1735 #define XFL(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1)) 2786 - #define XFL_MASK (XFL (0x3f, 0x3ff, 1) | (((unsigned long)1) << 25) | (((unsigned long)1) << 16)) 1736 + #define XFL_MASK XFL (0x3f, 0x3ff, 1) 2787 1737 2788 1738 /* An X form isel instruction. */ 2789 - #define XISEL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1)) 2790 - #define XISEL_MASK XISEL(0x3f, 0x1f) 1739 + #define XISEL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x1f) << 1)) 1740 + #define XISEL_MASK XISEL(0x3f, 0x1f) 2791 1741 2792 1742 /* An XL form instruction with the LK field set to 0. */ 2793 1743 #define XL(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1)) ··· 2797 1747 2798 1748 /* The mask for an XL form instruction. */ 2799 1749 #define XL_MASK XLLK (0x3f, 0x3ff, 1) 1750 + 1751 + /* An XL_MASK with the RT, RA and RB fields fixed, but S bit clear. */ 1752 + #define XLS_MASK ((XL_MASK | RT_MASK | RA_MASK | RB_MASK) & ~(1 << 11)) 2800 1753 2801 1754 /* An XL form instruction which explicitly sets the BO field. */ 2802 1755 #define XLO(op, bo, xop, lk) \ ··· 2831 1778 /* An XL_MASK with the BO, BI and BB fields fixed. */ 2832 1779 #define XLBOBIBB_MASK (XL_MASK | BO_MASK | BI_MASK | BB_MASK) 2833 1780 1781 + /* An X form mbar instruction with MO field. */ 1782 + #define XMBAR(op, xop, mo) (X ((op), (xop)) | ((((unsigned long)(mo)) & 1) << 21)) 1783 + 2834 1784 /* An XO form instruction. */ 2835 1785 #define XO(op, xop, oe, rc) \ 2836 1786 (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 1) | ((((unsigned long)(oe)) & 1) << 10) | (((unsigned long)(rc)) & 1)) ··· 2841 1785 2842 1786 /* An XO_MASK with the RB field fixed. */ 2843 1787 #define XORB_MASK (XO_MASK | RB_MASK) 1788 + 1789 + /* An XOPS form instruction for paired singles. */ 1790 + #define XOPS(op, xop, rc) \ 1791 + (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1)) 1792 + #define XOPS_MASK XOPS (0x3f, 0x3ff, 1) 1793 + 2844 1794 2845 1795 /* An XS form instruction. */ 2846 1796 #define XS(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x1ff) << 2) | (((unsigned long)(rc)) & 1)) ··· 2871 1809 2872 1810 /* An XFX form instruction with the SPR field filled in except for the 2873 1811 SPRG field. */ 2874 - #define XSPRG_MASK (XSPR_MASK & ~(0x17 << 16)) 1812 + #define XSPRG_MASK (XSPR_MASK & ~(0x1f << 16)) 2875 1813 2876 1814 /* An X form instruction with everything filled in except the E field. */ 2877 1815 #define XE_MASK (0xffff7fff) ··· 2879 1817 /* An X form user context instruction. */ 2880 1818 #define XUC(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x1f)) 2881 1819 #define XUC_MASK XUC(0x3f, 0x1f) 1820 + 1821 + /* An XW form instruction. */ 1822 + #define XW(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3f) << 1) | ((rc) & 1)) 1823 + /* The mask for a G form instruction. rc not supported at present. */ 1824 + #define XW_MASK XW (0x3f, 0x3f, 0) 1825 + 1826 + /* An APU form instruction. */ 1827 + #define APU(op, xop, rc) (OP (op) | (((unsigned long)(xop)) & 0x3ff) << 1 | ((rc) & 1)) 1828 + 1829 + /* The mask for an APU form instruction. */ 1830 + #define APU_MASK APU (0x3f, 0x3ff, 1) 1831 + #define APU_RT_MASK (APU_MASK | RT_MASK) 1832 + #define APU_RA_MASK (APU_MASK | RA_MASK) 2882 1833 2883 1834 /* The BO encodings used in extended conditional branch mnemonics. */ 2884 1835 #define BODNZF (0x0) ··· 2923 1848 2924 1849 #define BOU (0x14) 2925 1850 1851 + /* The BO16 encodings used in extended VLE conditional branch mnemonics. */ 1852 + #define BO16F (0x0) 1853 + #define BO16T (0x1) 1854 + 1855 + /* The BO32 encodings used in extended VLE conditional branch mnemonics. */ 1856 + #define BO32F (0x0) 1857 + #define BO32T (0x1) 1858 + #define BO32DNZ (0x2) 1859 + #define BO32DZ (0x3) 1860 + 2926 1861 /* The BI condition bit encodings used in extended conditional branch 2927 1862 mnemonics. */ 2928 1863 #define CBLT (0) ··· 2960 1875 /* Smaller names for the flags so each entry in the opcodes table will 2961 1876 fit on a single line. */ 2962 1877 #undef PPC 2963 - #define PPC PPC_OPCODE_PPC 1878 + #define PPC PPC_OPCODE_PPC 2964 1879 #define PPCCOM PPC_OPCODE_PPC | PPC_OPCODE_COMMON 2965 - #define NOPOWER4 PPC_OPCODE_NOPOWER4 | PPCCOM 2966 1880 #define POWER4 PPC_OPCODE_POWER4 2967 1881 #define POWER5 PPC_OPCODE_POWER5 2968 1882 #define POWER6 PPC_OPCODE_POWER6 1883 + #define POWER7 PPC_OPCODE_POWER7 1884 + #define POWER8 PPC_OPCODE_POWER8 1885 + #define POWER9 PPC_OPCODE_POWER9 2969 1886 #define CELL PPC_OPCODE_CELL 2970 - #define PPC32 PPC_OPCODE_32 | PPC_OPCODE_PPC 2971 - #define PPC64 PPC_OPCODE_64 | PPC_OPCODE_PPC 1887 + #define PPC64 PPC_OPCODE_64 | PPC_OPCODE_64_BRIDGE 1888 + #define NON32 (PPC_OPCODE_64 | PPC_OPCODE_POWER4 \ 1889 + | PPC_OPCODE_EFS | PPC_OPCODE_E500MC | PPC_OPCODE_TITAN) 2972 1890 #define PPC403 PPC_OPCODE_403 2973 - #define PPC405 PPC403 1891 + #define PPC405 PPC_OPCODE_405 2974 1892 #define PPC440 PPC_OPCODE_440 2975 - #define PPC750 PPC 2976 - #define PPC860 PPC 1893 + #define PPC464 PPC440 1894 + #define PPC476 PPC_OPCODE_476 1895 + #define PPC750 PPC_OPCODE_750 1896 + #define PPC7450 PPC_OPCODE_7450 1897 + #define PPC860 PPC_OPCODE_860 1898 + #define PPCPS PPC_OPCODE_PPCPS 2977 1899 #define PPCVEC PPC_OPCODE_ALTIVEC 2978 - #define POWER PPC_OPCODE_POWER 2979 - #define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2 2980 - #define PPCPWR2 PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 2981 - #define POWER32 PPC_OPCODE_POWER | PPC_OPCODE_32 2982 - #define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON 2983 - #define COM32 PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON | PPC_OPCODE_32 2984 - #define M601 PPC_OPCODE_POWER | PPC_OPCODE_601 1900 + #define PPCVEC2 PPC_OPCODE_ALTIVEC2 1901 + #define PPCVEC3 PPC_OPCODE_ALTIVEC2 1902 + #define PPCVSX PPC_OPCODE_VSX 1903 + #define PPCVSX2 PPC_OPCODE_VSX 1904 + #define PPCVSX3 PPC_OPCODE_VSX3 1905 + #define POWER PPC_OPCODE_POWER 1906 + #define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2 1907 + #define PWR2COM PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON 1908 + #define PPCPWR2 PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_COMMON 1909 + #define COM PPC_OPCODE_POWER | PPC_OPCODE_PPC | PPC_OPCODE_COMMON 1910 + #define M601 PPC_OPCODE_POWER | PPC_OPCODE_601 2985 1911 #define PWRCOM PPC_OPCODE_POWER | PPC_OPCODE_601 | PPC_OPCODE_COMMON 2986 - #define MFDEC1 PPC_OPCODE_POWER 2987 - #define MFDEC2 PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE 1912 + #define MFDEC1 PPC_OPCODE_POWER 1913 + #define MFDEC2 PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE | PPC_OPCODE_TITAN 2988 1914 #define BOOKE PPC_OPCODE_BOOKE 2989 - #define BOOKE64 PPC_OPCODE_BOOKE64 2990 - #define CLASSIC PPC_OPCODE_CLASSIC 1915 + #define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS 2991 1916 #define PPCE300 PPC_OPCODE_E300 2992 1917 #define PPCSPE PPC_OPCODE_SPE 2993 - #define PPCISEL PPC_OPCODE_ISEL 1918 + #define PPCISEL PPC_OPCODE_ISEL 2994 1919 #define PPCEFS PPC_OPCODE_EFS 2995 - #define PPCBRLK PPC_OPCODE_BRLOCK 1920 + #define PPCBRLK PPC_OPCODE_BRLOCK 2996 1921 #define PPCPMR PPC_OPCODE_PMR 2997 - #define PPCCHLK PPC_OPCODE_CACHELCK 2998 - #define PPCCHLK64 PPC_OPCODE_CACHELCK | PPC_OPCODE_BOOKE64 1922 + #define PPCTMR PPC_OPCODE_TMR 1923 + #define PPCCHLK PPC_OPCODE_CACHELCK 2999 1924 #define PPCRFMCI PPC_OPCODE_RFMCI 1925 + #define E500MC PPC_OPCODE_E500MC 1926 + #define PPCA2 PPC_OPCODE_A2 1927 + #define TITAN PPC_OPCODE_TITAN 1928 + #define MULHW PPC_OPCODE_405 | PPC_OPCODE_440 | TITAN 1929 + #define E500 PPC_OPCODE_E500 1930 + #define E6500 PPC_OPCODE_E6500 1931 + #define PPCVLE PPC_OPCODE_VLE 1932 + #define PPCHTM PPC_OPCODE_HTM 1933 + #define E200Z4 PPC_OPCODE_E200Z4 1934 + /* The list of embedded processors that use the embedded operand ordering 1935 + for the 3 operand dcbt and dcbtst instructions. */ 1936 + #define DCBT_EO (PPC_OPCODE_E500 | PPC_OPCODE_E500MC | PPC_OPCODE_476 \ 1937 + | PPC_OPCODE_A2) 1938 + 1939 + 3000 1940 3001 1941 /* The opcode table. 3002 1942 3003 1943 The format of the opcode table is: 3004 1944 3005 - NAME OPCODE MASK FLAGS { OPERANDS } 1945 + NAME OPCODE MASK FLAGS ANTI {OPERANDS} 3006 1946 3007 1947 NAME is the name of the instruction. 3008 1948 OPCODE is the instruction opcode. 3009 1949 MASK is the opcode mask; this is used to tell the disassembler 3010 1950 which bits in the actual opcode must match OPCODE. 3011 - FLAGS are flags indicated what processors support the instruction. 1951 + FLAGS are flags indicating which processors support the instruction. 1952 + ANTI indicates which processors don't support the instruction. 3012 1953 OPERANDS is the list of operands. 3013 1954 3014 1955 The disassembler reads the table in order and prints the first 3015 1956 instruction which matches, so this table is sorted to put more 3016 - specific instructions before more general instructions. It is also 3017 - sorted by major opcode. */ 1957 + specific instructions before more general instructions. 1958 + 1959 + This table must be sorted by major opcode. Please try to keep it 1960 + vaguely sorted within major opcode too, except of course where 1961 + constrained otherwise by disassembler operation. */ 3018 1962 3019 1963 const struct powerpc_opcode powerpc_opcodes[] = { 3020 - { "attn", X(0,256), X_MASK, POWER4, { 0 } }, 3021 - { "tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC64, { RA, SI } }, 3022 - { "tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC64, { RA, SI } }, 3023 - { "tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC64, { RA, SI } }, 3024 - { "tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC64, { RA, SI } }, 3025 - { "tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC64, { RA, SI } }, 3026 - { "tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC64, { RA, SI } }, 3027 - { "tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC64, { RA, SI } }, 3028 - { "tdgti", OPTO(2,TOGT), OPTO_MASK, PPC64, { RA, SI } }, 3029 - { "tdgei", OPTO(2,TOGE), OPTO_MASK, PPC64, { RA, SI } }, 3030 - { "tdnli", OPTO(2,TONL), OPTO_MASK, PPC64, { RA, SI } }, 3031 - { "tdlti", OPTO(2,TOLT), OPTO_MASK, PPC64, { RA, SI } }, 3032 - { "tdlei", OPTO(2,TOLE), OPTO_MASK, PPC64, { RA, SI } }, 3033 - { "tdngi", OPTO(2,TONG), OPTO_MASK, PPC64, { RA, SI } }, 3034 - { "tdnei", OPTO(2,TONE), OPTO_MASK, PPC64, { RA, SI } }, 3035 - { "tdi", OP(2), OP_MASK, PPC64, { TO, RA, SI } }, 3036 - 3037 - { "twlgti", OPTO(3,TOLGT), OPTO_MASK, PPCCOM, { RA, SI } }, 3038 - { "tlgti", OPTO(3,TOLGT), OPTO_MASK, PWRCOM, { RA, SI } }, 3039 - { "twllti", OPTO(3,TOLLT), OPTO_MASK, PPCCOM, { RA, SI } }, 3040 - { "tllti", OPTO(3,TOLLT), OPTO_MASK, PWRCOM, { RA, SI } }, 3041 - { "tweqi", OPTO(3,TOEQ), OPTO_MASK, PPCCOM, { RA, SI } }, 3042 - { "teqi", OPTO(3,TOEQ), OPTO_MASK, PWRCOM, { RA, SI } }, 3043 - { "twlgei", OPTO(3,TOLGE), OPTO_MASK, PPCCOM, { RA, SI } }, 3044 - { "tlgei", OPTO(3,TOLGE), OPTO_MASK, PWRCOM, { RA, SI } }, 3045 - { "twlnli", OPTO(3,TOLNL), OPTO_MASK, PPCCOM, { RA, SI } }, 3046 - { "tlnli", OPTO(3,TOLNL), OPTO_MASK, PWRCOM, { RA, SI } }, 3047 - { "twllei", OPTO(3,TOLLE), OPTO_MASK, PPCCOM, { RA, SI } }, 3048 - { "tllei", OPTO(3,TOLLE), OPTO_MASK, PWRCOM, { RA, SI } }, 3049 - { "twlngi", OPTO(3,TOLNG), OPTO_MASK, PPCCOM, { RA, SI } }, 3050 - { "tlngi", OPTO(3,TOLNG), OPTO_MASK, PWRCOM, { RA, SI } }, 3051 - { "twgti", OPTO(3,TOGT), OPTO_MASK, PPCCOM, { RA, SI } }, 3052 - { "tgti", OPTO(3,TOGT), OPTO_MASK, PWRCOM, { RA, SI } }, 3053 - { "twgei", OPTO(3,TOGE), OPTO_MASK, PPCCOM, { RA, SI } }, 3054 - { "tgei", OPTO(3,TOGE), OPTO_MASK, PWRCOM, { RA, SI } }, 3055 - { "twnli", OPTO(3,TONL), OPTO_MASK, PPCCOM, { RA, SI } }, 3056 - { "tnli", OPTO(3,TONL), OPTO_MASK, PWRCOM, { RA, SI } }, 3057 - { "twlti", OPTO(3,TOLT), OPTO_MASK, PPCCOM, { RA, SI } }, 3058 - { "tlti", OPTO(3,TOLT), OPTO_MASK, PWRCOM, { RA, SI } }, 3059 - { "twlei", OPTO(3,TOLE), OPTO_MASK, PPCCOM, { RA, SI } }, 3060 - { "tlei", OPTO(3,TOLE), OPTO_MASK, PWRCOM, { RA, SI } }, 3061 - { "twngi", OPTO(3,TONG), OPTO_MASK, PPCCOM, { RA, SI } }, 3062 - { "tngi", OPTO(3,TONG), OPTO_MASK, PWRCOM, { RA, SI } }, 3063 - { "twnei", OPTO(3,TONE), OPTO_MASK, PPCCOM, { RA, SI } }, 3064 - { "tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, { RA, SI } }, 3065 - { "twi", OP(3), OP_MASK, PPCCOM, { TO, RA, SI } }, 3066 - { "ti", OP(3), OP_MASK, PWRCOM, { TO, RA, SI } }, 3067 - 3068 - { "macchw", XO(4,172,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3069 - { "macchw.", XO(4,172,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3070 - { "macchwo", XO(4,172,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3071 - { "macchwo.", XO(4,172,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3072 - { "macchws", XO(4,236,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3073 - { "macchws.", XO(4,236,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3074 - { "macchwso", XO(4,236,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3075 - { "macchwso.", XO(4,236,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3076 - { "macchwsu", XO(4,204,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3077 - { "macchwsu.", XO(4,204,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3078 - { "macchwsuo", XO(4,204,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3079 - { "macchwsuo.", XO(4,204,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3080 - { "macchwu", XO(4,140,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3081 - { "macchwu.", XO(4,140,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3082 - { "macchwuo", XO(4,140,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3083 - { "macchwuo.", XO(4,140,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3084 - { "machhw", XO(4,44,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3085 - { "machhw.", XO(4,44,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3086 - { "machhwo", XO(4,44,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3087 - { "machhwo.", XO(4,44,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3088 - { "machhws", XO(4,108,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3089 - { "machhws.", XO(4,108,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3090 - { "machhwso", XO(4,108,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3091 - { "machhwso.", XO(4,108,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3092 - { "machhwsu", XO(4,76,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3093 - { "machhwsu.", XO(4,76,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3094 - { "machhwsuo", XO(4,76,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3095 - { "machhwsuo.", XO(4,76,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3096 - { "machhwu", XO(4,12,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3097 - { "machhwu.", XO(4,12,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3098 - { "machhwuo", XO(4,12,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3099 - { "machhwuo.", XO(4,12,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3100 - { "maclhw", XO(4,428,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3101 - { "maclhw.", XO(4,428,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3102 - { "maclhwo", XO(4,428,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3103 - { "maclhwo.", XO(4,428,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3104 - { "maclhws", XO(4,492,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3105 - { "maclhws.", XO(4,492,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3106 - { "maclhwso", XO(4,492,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3107 - { "maclhwso.", XO(4,492,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3108 - { "maclhwsu", XO(4,460,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3109 - { "maclhwsu.", XO(4,460,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3110 - { "maclhwsuo", XO(4,460,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3111 - { "maclhwsuo.", XO(4,460,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3112 - { "maclhwu", XO(4,396,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3113 - { "maclhwu.", XO(4,396,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3114 - { "maclhwuo", XO(4,396,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3115 - { "maclhwuo.", XO(4,396,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3116 - { "mulchw", XRC(4,168,0), X_MASK, PPC405|PPC440, { RT, RA, RB } }, 3117 - { "mulchw.", XRC(4,168,1), X_MASK, PPC405|PPC440, { RT, RA, RB } }, 3118 - { "mulchwu", XRC(4,136,0), X_MASK, PPC405|PPC440, { RT, RA, RB } }, 3119 - { "mulchwu.", XRC(4,136,1), X_MASK, PPC405|PPC440, { RT, RA, RB } }, 3120 - { "mulhhw", XRC(4,40,0), X_MASK, PPC405|PPC440, { RT, RA, RB } }, 3121 - { "mulhhw.", XRC(4,40,1), X_MASK, PPC405|PPC440, { RT, RA, RB } }, 3122 - { "mulhhwu", XRC(4,8,0), X_MASK, PPC405|PPC440, { RT, RA, RB } }, 3123 - { "mulhhwu.", XRC(4,8,1), X_MASK, PPC405|PPC440, { RT, RA, RB } }, 3124 - { "mullhw", XRC(4,424,0), X_MASK, PPC405|PPC440, { RT, RA, RB } }, 3125 - { "mullhw.", XRC(4,424,1), X_MASK, PPC405|PPC440, { RT, RA, RB } }, 3126 - { "mullhwu", XRC(4,392,0), X_MASK, PPC405|PPC440, { RT, RA, RB } }, 3127 - { "mullhwu.", XRC(4,392,1), X_MASK, PPC405|PPC440, { RT, RA, RB } }, 3128 - { "nmacchw", XO(4,174,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3129 - { "nmacchw.", XO(4,174,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3130 - { "nmacchwo", XO(4,174,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3131 - { "nmacchwo.", XO(4,174,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3132 - { "nmacchws", XO(4,238,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3133 - { "nmacchws.", XO(4,238,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3134 - { "nmacchwso", XO(4,238,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3135 - { "nmacchwso.", XO(4,238,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3136 - { "nmachhw", XO(4,46,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3137 - { "nmachhw.", XO(4,46,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3138 - { "nmachhwo", XO(4,46,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3139 - { "nmachhwo.", XO(4,46,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3140 - { "nmachhws", XO(4,110,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3141 - { "nmachhws.", XO(4,110,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3142 - { "nmachhwso", XO(4,110,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3143 - { "nmachhwso.", XO(4,110,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3144 - { "nmaclhw", XO(4,430,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3145 - { "nmaclhw.", XO(4,430,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3146 - { "nmaclhwo", XO(4,430,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3147 - { "nmaclhwo.", XO(4,430,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3148 - { "nmaclhws", XO(4,494,0,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3149 - { "nmaclhws.", XO(4,494,0,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3150 - { "nmaclhwso", XO(4,494,1,0), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3151 - { "nmaclhwso.", XO(4,494,1,1), XO_MASK, PPC405|PPC440, { RT, RA, RB } }, 3152 - { "mfvscr", VX(4, 1540), VX_MASK, PPCVEC, { VD } }, 3153 - { "mtvscr", VX(4, 1604), VX_MASK, PPCVEC, { VB } }, 3154 - 3155 - /* Double-precision opcodes. */ 3156 - /* Some of these conflict with AltiVec, so move them before, since 3157 - PPCVEC includes the PPC_OPCODE_PPC set. */ 3158 - { "efscfd", VX(4, 719), VX_MASK, PPCEFS, { RS, RB } }, 3159 - { "efdabs", VX(4, 740), VX_MASK, PPCEFS, { RS, RA } }, 3160 - { "efdnabs", VX(4, 741), VX_MASK, PPCEFS, { RS, RA } }, 3161 - { "efdneg", VX(4, 742), VX_MASK, PPCEFS, { RS, RA } }, 3162 - { "efdadd", VX(4, 736), VX_MASK, PPCEFS, { RS, RA, RB } }, 3163 - { "efdsub", VX(4, 737), VX_MASK, PPCEFS, { RS, RA, RB } }, 3164 - { "efdmul", VX(4, 744), VX_MASK, PPCEFS, { RS, RA, RB } }, 3165 - { "efddiv", VX(4, 745), VX_MASK, PPCEFS, { RS, RA, RB } }, 3166 - { "efdcmpgt", VX(4, 748), VX_MASK, PPCEFS, { CRFD, RA, RB } }, 3167 - { "efdcmplt", VX(4, 749), VX_MASK, PPCEFS, { CRFD, RA, RB } }, 3168 - { "efdcmpeq", VX(4, 750), VX_MASK, PPCEFS, { CRFD, RA, RB } }, 3169 - { "efdtstgt", VX(4, 764), VX_MASK, PPCEFS, { CRFD, RA, RB } }, 3170 - { "efdtstlt", VX(4, 765), VX_MASK, PPCEFS, { CRFD, RA, RB } }, 3171 - { "efdtsteq", VX(4, 766), VX_MASK, PPCEFS, { CRFD, RA, RB } }, 3172 - { "efdcfsi", VX(4, 753), VX_MASK, PPCEFS, { RS, RB } }, 3173 - { "efdcfsid", VX(4, 739), VX_MASK, PPCEFS, { RS, RB } }, 3174 - { "efdcfui", VX(4, 752), VX_MASK, PPCEFS, { RS, RB } }, 3175 - { "efdcfuid", VX(4, 738), VX_MASK, PPCEFS, { RS, RB } }, 3176 - { "efdcfsf", VX(4, 755), VX_MASK, PPCEFS, { RS, RB } }, 3177 - { "efdcfuf", VX(4, 754), VX_MASK, PPCEFS, { RS, RB } }, 3178 - { "efdctsi", VX(4, 757), VX_MASK, PPCEFS, { RS, RB } }, 3179 - { "efdctsidz",VX(4, 747), VX_MASK, PPCEFS, { RS, RB } }, 3180 - { "efdctsiz", VX(4, 762), VX_MASK, PPCEFS, { RS, RB } }, 3181 - { "efdctui", VX(4, 756), VX_MASK, PPCEFS, { RS, RB } }, 3182 - { "efdctuidz",VX(4, 746), VX_MASK, PPCEFS, { RS, RB } }, 3183 - { "efdctuiz", VX(4, 760), VX_MASK, PPCEFS, { RS, RB } }, 3184 - { "efdctsf", VX(4, 759), VX_MASK, PPCEFS, { RS, RB } }, 3185 - { "efdctuf", VX(4, 758), VX_MASK, PPCEFS, { RS, RB } }, 3186 - { "efdcfs", VX(4, 751), VX_MASK, PPCEFS, { RS, RB } }, 3187 - /* End of double-precision opcodes. */ 3188 - 3189 - { "vaddcuw", VX(4, 384), VX_MASK, PPCVEC, { VD, VA, VB } }, 3190 - { "vaddfp", VX(4, 10), VX_MASK, PPCVEC, { VD, VA, VB } }, 3191 - { "vaddsbs", VX(4, 768), VX_MASK, PPCVEC, { VD, VA, VB } }, 3192 - { "vaddshs", VX(4, 832), VX_MASK, PPCVEC, { VD, VA, VB } }, 3193 - { "vaddsws", VX(4, 896), VX_MASK, PPCVEC, { VD, VA, VB } }, 3194 - { "vaddubm", VX(4, 0), VX_MASK, PPCVEC, { VD, VA, VB } }, 3195 - { "vaddubs", VX(4, 512), VX_MASK, PPCVEC, { VD, VA, VB } }, 3196 - { "vadduhm", VX(4, 64), VX_MASK, PPCVEC, { VD, VA, VB } }, 3197 - { "vadduhs", VX(4, 576), VX_MASK, PPCVEC, { VD, VA, VB } }, 3198 - { "vadduwm", VX(4, 128), VX_MASK, PPCVEC, { VD, VA, VB } }, 3199 - { "vadduws", VX(4, 640), VX_MASK, PPCVEC, { VD, VA, VB } }, 3200 - { "vand", VX(4, 1028), VX_MASK, PPCVEC, { VD, VA, VB } }, 3201 - { "vandc", VX(4, 1092), VX_MASK, PPCVEC, { VD, VA, VB } }, 3202 - { "vavgsb", VX(4, 1282), VX_MASK, PPCVEC, { VD, VA, VB } }, 3203 - { "vavgsh", VX(4, 1346), VX_MASK, PPCVEC, { VD, VA, VB } }, 3204 - { "vavgsw", VX(4, 1410), VX_MASK, PPCVEC, { VD, VA, VB } }, 3205 - { "vavgub", VX(4, 1026), VX_MASK, PPCVEC, { VD, VA, VB } }, 3206 - { "vavguh", VX(4, 1090), VX_MASK, PPCVEC, { VD, VA, VB } }, 3207 - { "vavguw", VX(4, 1154), VX_MASK, PPCVEC, { VD, VA, VB } }, 3208 - { "vcfsx", VX(4, 842), VX_MASK, PPCVEC, { VD, VB, UIMM } }, 3209 - { "vcfux", VX(4, 778), VX_MASK, PPCVEC, { VD, VB, UIMM } }, 3210 - { "vcmpbfp", VXR(4, 966, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3211 - { "vcmpbfp.", VXR(4, 966, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3212 - { "vcmpeqfp", VXR(4, 198, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3213 - { "vcmpeqfp.", VXR(4, 198, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3214 - { "vcmpequb", VXR(4, 6, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3215 - { "vcmpequb.", VXR(4, 6, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3216 - { "vcmpequh", VXR(4, 70, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3217 - { "vcmpequh.", VXR(4, 70, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3218 - { "vcmpequw", VXR(4, 134, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3219 - { "vcmpequw.", VXR(4, 134, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3220 - { "vcmpgefp", VXR(4, 454, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3221 - { "vcmpgefp.", VXR(4, 454, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3222 - { "vcmpgtfp", VXR(4, 710, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3223 - { "vcmpgtfp.", VXR(4, 710, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3224 - { "vcmpgtsb", VXR(4, 774, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3225 - { "vcmpgtsb.", VXR(4, 774, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3226 - { "vcmpgtsh", VXR(4, 838, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3227 - { "vcmpgtsh.", VXR(4, 838, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3228 - { "vcmpgtsw", VXR(4, 902, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3229 - { "vcmpgtsw.", VXR(4, 902, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3230 - { "vcmpgtub", VXR(4, 518, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3231 - { "vcmpgtub.", VXR(4, 518, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3232 - { "vcmpgtuh", VXR(4, 582, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3233 - { "vcmpgtuh.", VXR(4, 582, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3234 - { "vcmpgtuw", VXR(4, 646, 0), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3235 - { "vcmpgtuw.", VXR(4, 646, 1), VXR_MASK, PPCVEC, { VD, VA, VB } }, 3236 - { "vctsxs", VX(4, 970), VX_MASK, PPCVEC, { VD, VB, UIMM } }, 3237 - { "vctuxs", VX(4, 906), VX_MASK, PPCVEC, { VD, VB, UIMM } }, 3238 - { "vexptefp", VX(4, 394), VX_MASK, PPCVEC, { VD, VB } }, 3239 - { "vlogefp", VX(4, 458), VX_MASK, PPCVEC, { VD, VB } }, 3240 - { "vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, { VD, VA, VC, VB } }, 3241 - { "vmaxfp", VX(4, 1034), VX_MASK, PPCVEC, { VD, VA, VB } }, 3242 - { "vmaxsb", VX(4, 258), VX_MASK, PPCVEC, { VD, VA, VB } }, 3243 - { "vmaxsh", VX(4, 322), VX_MASK, PPCVEC, { VD, VA, VB } }, 3244 - { "vmaxsw", VX(4, 386), VX_MASK, PPCVEC, { VD, VA, VB } }, 3245 - { "vmaxub", VX(4, 2), VX_MASK, PPCVEC, { VD, VA, VB } }, 3246 - { "vmaxuh", VX(4, 66), VX_MASK, PPCVEC, { VD, VA, VB } }, 3247 - { "vmaxuw", VX(4, 130), VX_MASK, PPCVEC, { VD, VA, VB } }, 3248 - { "vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, 3249 - { "vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, 3250 - { "vminfp", VX(4, 1098), VX_MASK, PPCVEC, { VD, VA, VB } }, 3251 - { "vminsb", VX(4, 770), VX_MASK, PPCVEC, { VD, VA, VB } }, 3252 - { "vminsh", VX(4, 834), VX_MASK, PPCVEC, { VD, VA, VB } }, 3253 - { "vminsw", VX(4, 898), VX_MASK, PPCVEC, { VD, VA, VB } }, 3254 - { "vminub", VX(4, 514), VX_MASK, PPCVEC, { VD, VA, VB } }, 3255 - { "vminuh", VX(4, 578), VX_MASK, PPCVEC, { VD, VA, VB } }, 3256 - { "vminuw", VX(4, 642), VX_MASK, PPCVEC, { VD, VA, VB } }, 3257 - { "vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, 3258 - { "vmrghb", VX(4, 12), VX_MASK, PPCVEC, { VD, VA, VB } }, 3259 - { "vmrghh", VX(4, 76), VX_MASK, PPCVEC, { VD, VA, VB } }, 3260 - { "vmrghw", VX(4, 140), VX_MASK, PPCVEC, { VD, VA, VB } }, 3261 - { "vmrglb", VX(4, 268), VX_MASK, PPCVEC, { VD, VA, VB } }, 3262 - { "vmrglh", VX(4, 332), VX_MASK, PPCVEC, { VD, VA, VB } }, 3263 - { "vmrglw", VX(4, 396), VX_MASK, PPCVEC, { VD, VA, VB } }, 3264 - { "vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, 3265 - { "vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, 3266 - { "vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, 3267 - { "vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, 3268 - { "vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, 3269 - { "vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, 3270 - { "vmulesb", VX(4, 776), VX_MASK, PPCVEC, { VD, VA, VB } }, 3271 - { "vmulesh", VX(4, 840), VX_MASK, PPCVEC, { VD, VA, VB } }, 3272 - { "vmuleub", VX(4, 520), VX_MASK, PPCVEC, { VD, VA, VB } }, 3273 - { "vmuleuh", VX(4, 584), VX_MASK, PPCVEC, { VD, VA, VB } }, 3274 - { "vmulosb", VX(4, 264), VX_MASK, PPCVEC, { VD, VA, VB } }, 3275 - { "vmulosh", VX(4, 328), VX_MASK, PPCVEC, { VD, VA, VB } }, 3276 - { "vmuloub", VX(4, 8), VX_MASK, PPCVEC, { VD, VA, VB } }, 3277 - { "vmulouh", VX(4, 72), VX_MASK, PPCVEC, { VD, VA, VB } }, 3278 - { "vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, { VD, VA, VC, VB } }, 3279 - { "vnor", VX(4, 1284), VX_MASK, PPCVEC, { VD, VA, VB } }, 3280 - { "vor", VX(4, 1156), VX_MASK, PPCVEC, { VD, VA, VB } }, 3281 - { "vperm", VXA(4, 43), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, 3282 - { "vpkpx", VX(4, 782), VX_MASK, PPCVEC, { VD, VA, VB } }, 3283 - { "vpkshss", VX(4, 398), VX_MASK, PPCVEC, { VD, VA, VB } }, 3284 - { "vpkshus", VX(4, 270), VX_MASK, PPCVEC, { VD, VA, VB } }, 3285 - { "vpkswss", VX(4, 462), VX_MASK, PPCVEC, { VD, VA, VB } }, 3286 - { "vpkswus", VX(4, 334), VX_MASK, PPCVEC, { VD, VA, VB } }, 3287 - { "vpkuhum", VX(4, 14), VX_MASK, PPCVEC, { VD, VA, VB } }, 3288 - { "vpkuhus", VX(4, 142), VX_MASK, PPCVEC, { VD, VA, VB } }, 3289 - { "vpkuwum", VX(4, 78), VX_MASK, PPCVEC, { VD, VA, VB } }, 3290 - { "vpkuwus", VX(4, 206), VX_MASK, PPCVEC, { VD, VA, VB } }, 3291 - { "vrefp", VX(4, 266), VX_MASK, PPCVEC, { VD, VB } }, 3292 - { "vrfim", VX(4, 714), VX_MASK, PPCVEC, { VD, VB } }, 3293 - { "vrfin", VX(4, 522), VX_MASK, PPCVEC, { VD, VB } }, 3294 - { "vrfip", VX(4, 650), VX_MASK, PPCVEC, { VD, VB } }, 3295 - { "vrfiz", VX(4, 586), VX_MASK, PPCVEC, { VD, VB } }, 3296 - { "vrlb", VX(4, 4), VX_MASK, PPCVEC, { VD, VA, VB } }, 3297 - { "vrlh", VX(4, 68), VX_MASK, PPCVEC, { VD, VA, VB } }, 3298 - { "vrlw", VX(4, 132), VX_MASK, PPCVEC, { VD, VA, VB } }, 3299 - { "vrsqrtefp", VX(4, 330), VX_MASK, PPCVEC, { VD, VB } }, 3300 - { "vsel", VXA(4, 42), VXA_MASK, PPCVEC, { VD, VA, VB, VC } }, 3301 - { "vsl", VX(4, 452), VX_MASK, PPCVEC, { VD, VA, VB } }, 3302 - { "vslb", VX(4, 260), VX_MASK, PPCVEC, { VD, VA, VB } }, 3303 - { "vsldoi", VXA(4, 44), VXA_MASK, PPCVEC, { VD, VA, VB, SHB } }, 3304 - { "vslh", VX(4, 324), VX_MASK, PPCVEC, { VD, VA, VB } }, 3305 - { "vslo", VX(4, 1036), VX_MASK, PPCVEC, { VD, VA, VB } }, 3306 - { "vslw", VX(4, 388), VX_MASK, PPCVEC, { VD, VA, VB } }, 3307 - { "vspltb", VX(4, 524), VX_MASK, PPCVEC, { VD, VB, UIMM } }, 3308 - { "vsplth", VX(4, 588), VX_MASK, PPCVEC, { VD, VB, UIMM } }, 3309 - { "vspltisb", VX(4, 780), VX_MASK, PPCVEC, { VD, SIMM } }, 3310 - { "vspltish", VX(4, 844), VX_MASK, PPCVEC, { VD, SIMM } }, 3311 - { "vspltisw", VX(4, 908), VX_MASK, PPCVEC, { VD, SIMM } }, 3312 - { "vspltw", VX(4, 652), VX_MASK, PPCVEC, { VD, VB, UIMM } }, 3313 - { "vsr", VX(4, 708), VX_MASK, PPCVEC, { VD, VA, VB } }, 3314 - { "vsrab", VX(4, 772), VX_MASK, PPCVEC, { VD, VA, VB } }, 3315 - { "vsrah", VX(4, 836), VX_MASK, PPCVEC, { VD, VA, VB } }, 3316 - { "vsraw", VX(4, 900), VX_MASK, PPCVEC, { VD, VA, VB } }, 3317 - { "vsrb", VX(4, 516), VX_MASK, PPCVEC, { VD, VA, VB } }, 3318 - { "vsrh", VX(4, 580), VX_MASK, PPCVEC, { VD, VA, VB } }, 3319 - { "vsro", VX(4, 1100), VX_MASK, PPCVEC, { VD, VA, VB } }, 3320 - { "vsrw", VX(4, 644), VX_MASK, PPCVEC, { VD, VA, VB } }, 3321 - { "vsubcuw", VX(4, 1408), VX_MASK, PPCVEC, { VD, VA, VB } }, 3322 - { "vsubfp", VX(4, 74), VX_MASK, PPCVEC, { VD, VA, VB } }, 3323 - { "vsubsbs", VX(4, 1792), VX_MASK, PPCVEC, { VD, VA, VB } }, 3324 - { "vsubshs", VX(4, 1856), VX_MASK, PPCVEC, { VD, VA, VB } }, 3325 - { "vsubsws", VX(4, 1920), VX_MASK, PPCVEC, { VD, VA, VB } }, 3326 - { "vsububm", VX(4, 1024), VX_MASK, PPCVEC, { VD, VA, VB } }, 3327 - { "vsububs", VX(4, 1536), VX_MASK, PPCVEC, { VD, VA, VB } }, 3328 - { "vsubuhm", VX(4, 1088), VX_MASK, PPCVEC, { VD, VA, VB } }, 3329 - { "vsubuhs", VX(4, 1600), VX_MASK, PPCVEC, { VD, VA, VB } }, 3330 - { "vsubuwm", VX(4, 1152), VX_MASK, PPCVEC, { VD, VA, VB } }, 3331 - { "vsubuws", VX(4, 1664), VX_MASK, PPCVEC, { VD, VA, VB } }, 3332 - { "vsumsws", VX(4, 1928), VX_MASK, PPCVEC, { VD, VA, VB } }, 3333 - { "vsum2sws", VX(4, 1672), VX_MASK, PPCVEC, { VD, VA, VB } }, 3334 - { "vsum4sbs", VX(4, 1800), VX_MASK, PPCVEC, { VD, VA, VB } }, 3335 - { "vsum4shs", VX(4, 1608), VX_MASK, PPCVEC, { VD, VA, VB } }, 3336 - { "vsum4ubs", VX(4, 1544), VX_MASK, PPCVEC, { VD, VA, VB } }, 3337 - { "vupkhpx", VX(4, 846), VX_MASK, PPCVEC, { VD, VB } }, 3338 - { "vupkhsb", VX(4, 526), VX_MASK, PPCVEC, { VD, VB } }, 3339 - { "vupkhsh", VX(4, 590), VX_MASK, PPCVEC, { VD, VB } }, 3340 - { "vupklpx", VX(4, 974), VX_MASK, PPCVEC, { VD, VB } }, 3341 - { "vupklsb", VX(4, 654), VX_MASK, PPCVEC, { VD, VB } }, 3342 - { "vupklsh", VX(4, 718), VX_MASK, PPCVEC, { VD, VB } }, 3343 - { "vxor", VX(4, 1220), VX_MASK, PPCVEC, { VD, VA, VB } }, 3344 - 3345 - { "evaddw", VX(4, 512), VX_MASK, PPCSPE, { RS, RA, RB } }, 3346 - { "evaddiw", VX(4, 514), VX_MASK, PPCSPE, { RS, RB, UIMM } }, 3347 - { "evsubfw", VX(4, 516), VX_MASK, PPCSPE, { RS, RA, RB } }, 3348 - { "evsubw", VX(4, 516), VX_MASK, PPCSPE, { RS, RB, RA } }, 3349 - { "evsubifw", VX(4, 518), VX_MASK, PPCSPE, { RS, UIMM, RB } }, 3350 - { "evsubiw", VX(4, 518), VX_MASK, PPCSPE, { RS, RB, UIMM } }, 3351 - { "evabs", VX(4, 520), VX_MASK, PPCSPE, { RS, RA } }, 3352 - { "evneg", VX(4, 521), VX_MASK, PPCSPE, { RS, RA } }, 3353 - { "evextsb", VX(4, 522), VX_MASK, PPCSPE, { RS, RA } }, 3354 - { "evextsh", VX(4, 523), VX_MASK, PPCSPE, { RS, RA } }, 3355 - { "evrndw", VX(4, 524), VX_MASK, PPCSPE, { RS, RA } }, 3356 - { "evcntlzw", VX(4, 525), VX_MASK, PPCSPE, { RS, RA } }, 3357 - { "evcntlsw", VX(4, 526), VX_MASK, PPCSPE, { RS, RA } }, 3358 - 3359 - { "brinc", VX(4, 527), VX_MASK, PPCSPE, { RS, RA, RB } }, 3360 - 3361 - { "evand", VX(4, 529), VX_MASK, PPCSPE, { RS, RA, RB } }, 3362 - { "evandc", VX(4, 530), VX_MASK, PPCSPE, { RS, RA, RB } }, 3363 - { "evmr", VX(4, 535), VX_MASK, PPCSPE, { RS, RA, BBA } }, 3364 - { "evor", VX(4, 535), VX_MASK, PPCSPE, { RS, RA, RB } }, 3365 - { "evorc", VX(4, 539), VX_MASK, PPCSPE, { RS, RA, RB } }, 3366 - { "evxor", VX(4, 534), VX_MASK, PPCSPE, { RS, RA, RB } }, 3367 - { "eveqv", VX(4, 537), VX_MASK, PPCSPE, { RS, RA, RB } }, 3368 - { "evnand", VX(4, 542), VX_MASK, PPCSPE, { RS, RA, RB } }, 3369 - { "evnot", VX(4, 536), VX_MASK, PPCSPE, { RS, RA, BBA } }, 3370 - { "evnor", VX(4, 536), VX_MASK, PPCSPE, { RS, RA, RB } }, 3371 - 3372 - { "evrlw", VX(4, 552), VX_MASK, PPCSPE, { RS, RA, RB } }, 3373 - { "evrlwi", VX(4, 554), VX_MASK, PPCSPE, { RS, RA, EVUIMM } }, 3374 - { "evslw", VX(4, 548), VX_MASK, PPCSPE, { RS, RA, RB } }, 3375 - { "evslwi", VX(4, 550), VX_MASK, PPCSPE, { RS, RA, EVUIMM } }, 3376 - { "evsrws", VX(4, 545), VX_MASK, PPCSPE, { RS, RA, RB } }, 3377 - { "evsrwu", VX(4, 544), VX_MASK, PPCSPE, { RS, RA, RB } }, 3378 - { "evsrwis", VX(4, 547), VX_MASK, PPCSPE, { RS, RA, EVUIMM } }, 3379 - { "evsrwiu", VX(4, 546), VX_MASK, PPCSPE, { RS, RA, EVUIMM } }, 3380 - { "evsplati", VX(4, 553), VX_MASK, PPCSPE, { RS, SIMM } }, 3381 - { "evsplatfi", VX(4, 555), VX_MASK, PPCSPE, { RS, SIMM } }, 3382 - { "evmergehi", VX(4, 556), VX_MASK, PPCSPE, { RS, RA, RB } }, 3383 - { "evmergelo", VX(4, 557), VX_MASK, PPCSPE, { RS, RA, RB } }, 3384 - { "evmergehilo",VX(4,558), VX_MASK, PPCSPE, { RS, RA, RB } }, 3385 - { "evmergelohi",VX(4,559), VX_MASK, PPCSPE, { RS, RA, RB } }, 3386 - 3387 - { "evcmpgts", VX(4, 561), VX_MASK, PPCSPE, { CRFD, RA, RB } }, 3388 - { "evcmpgtu", VX(4, 560), VX_MASK, PPCSPE, { CRFD, RA, RB } }, 3389 - { "evcmplts", VX(4, 563), VX_MASK, PPCSPE, { CRFD, RA, RB } }, 3390 - { "evcmpltu", VX(4, 562), VX_MASK, PPCSPE, { CRFD, RA, RB } }, 3391 - { "evcmpeq", VX(4, 564), VX_MASK, PPCSPE, { CRFD, RA, RB } }, 3392 - { "evsel", EVSEL(4,79),EVSEL_MASK, PPCSPE, { RS, RA, RB, CRFS } }, 3393 - 3394 - { "evldd", VX(4, 769), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } }, 3395 - { "evlddx", VX(4, 768), VX_MASK, PPCSPE, { RS, RA, RB } }, 3396 - { "evldw", VX(4, 771), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } }, 3397 - { "evldwx", VX(4, 770), VX_MASK, PPCSPE, { RS, RA, RB } }, 3398 - { "evldh", VX(4, 773), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } }, 3399 - { "evldhx", VX(4, 772), VX_MASK, PPCSPE, { RS, RA, RB } }, 3400 - { "evlwhe", VX(4, 785), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, 3401 - { "evlwhex", VX(4, 784), VX_MASK, PPCSPE, { RS, RA, RB } }, 3402 - { "evlwhou", VX(4, 789), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, 3403 - { "evlwhoux", VX(4, 788), VX_MASK, PPCSPE, { RS, RA, RB } }, 3404 - { "evlwhos", VX(4, 791), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, 3405 - { "evlwhosx", VX(4, 790), VX_MASK, PPCSPE, { RS, RA, RB } }, 3406 - { "evlwwsplat",VX(4, 793), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, 3407 - { "evlwwsplatx",VX(4, 792), VX_MASK, PPCSPE, { RS, RA, RB } }, 3408 - { "evlwhsplat",VX(4, 797), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, 3409 - { "evlwhsplatx",VX(4, 796), VX_MASK, PPCSPE, { RS, RA, RB } }, 3410 - { "evlhhesplat",VX(4, 777), VX_MASK, PPCSPE, { RS, EVUIMM_2, RA } }, 3411 - { "evlhhesplatx",VX(4, 776), VX_MASK, PPCSPE, { RS, RA, RB } }, 3412 - { "evlhhousplat",VX(4, 781), VX_MASK, PPCSPE, { RS, EVUIMM_2, RA } }, 3413 - { "evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE, { RS, RA, RB } }, 3414 - { "evlhhossplat",VX(4, 783), VX_MASK, PPCSPE, { RS, EVUIMM_2, RA } }, 3415 - { "evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, { RS, RA, RB } }, 3416 - 3417 - { "evstdd", VX(4, 801), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } }, 3418 - { "evstddx", VX(4, 800), VX_MASK, PPCSPE, { RS, RA, RB } }, 3419 - { "evstdw", VX(4, 803), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } }, 3420 - { "evstdwx", VX(4, 802), VX_MASK, PPCSPE, { RS, RA, RB } }, 3421 - { "evstdh", VX(4, 805), VX_MASK, PPCSPE, { RS, EVUIMM_8, RA } }, 3422 - { "evstdhx", VX(4, 804), VX_MASK, PPCSPE, { RS, RA, RB } }, 3423 - { "evstwwe", VX(4, 825), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, 3424 - { "evstwwex", VX(4, 824), VX_MASK, PPCSPE, { RS, RA, RB } }, 3425 - { "evstwwo", VX(4, 829), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, 3426 - { "evstwwox", VX(4, 828), VX_MASK, PPCSPE, { RS, RA, RB } }, 3427 - { "evstwhe", VX(4, 817), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, 3428 - { "evstwhex", VX(4, 816), VX_MASK, PPCSPE, { RS, RA, RB } }, 3429 - { "evstwho", VX(4, 821), VX_MASK, PPCSPE, { RS, EVUIMM_4, RA } }, 3430 - { "evstwhox", VX(4, 820), VX_MASK, PPCSPE, { RS, RA, RB } }, 3431 - 3432 - { "evfsabs", VX(4, 644), VX_MASK, PPCSPE, { RS, RA } }, 3433 - { "evfsnabs", VX(4, 645), VX_MASK, PPCSPE, { RS, RA } }, 3434 - { "evfsneg", VX(4, 646), VX_MASK, PPCSPE, { RS, RA } }, 3435 - { "evfsadd", VX(4, 640), VX_MASK, PPCSPE, { RS, RA, RB } }, 3436 - { "evfssub", VX(4, 641), VX_MASK, PPCSPE, { RS, RA, RB } }, 3437 - { "evfsmul", VX(4, 648), VX_MASK, PPCSPE, { RS, RA, RB } }, 3438 - { "evfsdiv", VX(4, 649), VX_MASK, PPCSPE, { RS, RA, RB } }, 3439 - { "evfscmpgt", VX(4, 652), VX_MASK, PPCSPE, { CRFD, RA, RB } }, 3440 - { "evfscmplt", VX(4, 653), VX_MASK, PPCSPE, { CRFD, RA, RB } }, 3441 - { "evfscmpeq", VX(4, 654), VX_MASK, PPCSPE, { CRFD, RA, RB } }, 3442 - { "evfststgt", VX(4, 668), VX_MASK, PPCSPE, { CRFD, RA, RB } }, 3443 - { "evfststlt", VX(4, 669), VX_MASK, PPCSPE, { CRFD, RA, RB } }, 3444 - { "evfststeq", VX(4, 670), VX_MASK, PPCSPE, { CRFD, RA, RB } }, 3445 - { "evfscfui", VX(4, 656), VX_MASK, PPCSPE, { RS, RB } }, 3446 - { "evfsctuiz", VX(4, 664), VX_MASK, PPCSPE, { RS, RB } }, 3447 - { "evfscfsi", VX(4, 657), VX_MASK, PPCSPE, { RS, RB } }, 3448 - { "evfscfuf", VX(4, 658), VX_MASK, PPCSPE, { RS, RB } }, 3449 - { "evfscfsf", VX(4, 659), VX_MASK, PPCSPE, { RS, RB } }, 3450 - { "evfsctui", VX(4, 660), VX_MASK, PPCSPE, { RS, RB } }, 3451 - { "evfsctsi", VX(4, 661), VX_MASK, PPCSPE, { RS, RB } }, 3452 - { "evfsctsiz", VX(4, 666), VX_MASK, PPCSPE, { RS, RB } }, 3453 - { "evfsctuf", VX(4, 662), VX_MASK, PPCSPE, { RS, RB } }, 3454 - { "evfsctsf", VX(4, 663), VX_MASK, PPCSPE, { RS, RB } }, 3455 - 3456 - { "efsabs", VX(4, 708), VX_MASK, PPCEFS, { RS, RA } }, 3457 - { "efsnabs", VX(4, 709), VX_MASK, PPCEFS, { RS, RA } }, 3458 - { "efsneg", VX(4, 710), VX_MASK, PPCEFS, { RS, RA } }, 3459 - { "efsadd", VX(4, 704), VX_MASK, PPCEFS, { RS, RA, RB } }, 3460 - { "efssub", VX(4, 705), VX_MASK, PPCEFS, { RS, RA, RB } }, 3461 - { "efsmul", VX(4, 712), VX_MASK, PPCEFS, { RS, RA, RB } }, 3462 - { "efsdiv", VX(4, 713), VX_MASK, PPCEFS, { RS, RA, RB } }, 3463 - { "efscmpgt", VX(4, 716), VX_MASK, PPCEFS, { CRFD, RA, RB } }, 3464 - { "efscmplt", VX(4, 717), VX_MASK, PPCEFS, { CRFD, RA, RB } }, 3465 - { "efscmpeq", VX(4, 718), VX_MASK, PPCEFS, { CRFD, RA, RB } }, 3466 - { "efststgt", VX(4, 732), VX_MASK, PPCEFS, { CRFD, RA, RB } }, 3467 - { "efststlt", VX(4, 733), VX_MASK, PPCEFS, { CRFD, RA, RB } }, 3468 - { "efststeq", VX(4, 734), VX_MASK, PPCEFS, { CRFD, RA, RB } }, 3469 - { "efscfui", VX(4, 720), VX_MASK, PPCEFS, { RS, RB } }, 3470 - { "efsctuiz", VX(4, 728), VX_MASK, PPCEFS, { RS, RB } }, 3471 - { "efscfsi", VX(4, 721), VX_MASK, PPCEFS, { RS, RB } }, 3472 - { "efscfuf", VX(4, 722), VX_MASK, PPCEFS, { RS, RB } }, 3473 - { "efscfsf", VX(4, 723), VX_MASK, PPCEFS, { RS, RB } }, 3474 - { "efsctui", VX(4, 724), VX_MASK, PPCEFS, { RS, RB } }, 3475 - { "efsctsi", VX(4, 725), VX_MASK, PPCEFS, { RS, RB } }, 3476 - { "efsctsiz", VX(4, 730), VX_MASK, PPCEFS, { RS, RB } }, 3477 - { "efsctuf", VX(4, 726), VX_MASK, PPCEFS, { RS, RB } }, 3478 - { "efsctsf", VX(4, 727), VX_MASK, PPCEFS, { RS, RB } }, 3479 - 3480 - { "evmhossf", VX(4, 1031), VX_MASK, PPCSPE, { RS, RA, RB } }, 3481 - { "evmhossfa", VX(4, 1063), VX_MASK, PPCSPE, { RS, RA, RB } }, 3482 - { "evmhosmf", VX(4, 1039), VX_MASK, PPCSPE, { RS, RA, RB } }, 3483 - { "evmhosmfa", VX(4, 1071), VX_MASK, PPCSPE, { RS, RA, RB } }, 3484 - { "evmhosmi", VX(4, 1037), VX_MASK, PPCSPE, { RS, RA, RB } }, 3485 - { "evmhosmia", VX(4, 1069), VX_MASK, PPCSPE, { RS, RA, RB } }, 3486 - { "evmhoumi", VX(4, 1036), VX_MASK, PPCSPE, { RS, RA, RB } }, 3487 - { "evmhoumia", VX(4, 1068), VX_MASK, PPCSPE, { RS, RA, RB } }, 3488 - { "evmhessf", VX(4, 1027), VX_MASK, PPCSPE, { RS, RA, RB } }, 3489 - { "evmhessfa", VX(4, 1059), VX_MASK, PPCSPE, { RS, RA, RB } }, 3490 - { "evmhesmf", VX(4, 1035), VX_MASK, PPCSPE, { RS, RA, RB } }, 3491 - { "evmhesmfa", VX(4, 1067), VX_MASK, PPCSPE, { RS, RA, RB } }, 3492 - { "evmhesmi", VX(4, 1033), VX_MASK, PPCSPE, { RS, RA, RB } }, 3493 - { "evmhesmia", VX(4, 1065), VX_MASK, PPCSPE, { RS, RA, RB } }, 3494 - { "evmheumi", VX(4, 1032), VX_MASK, PPCSPE, { RS, RA, RB } }, 3495 - { "evmheumia", VX(4, 1064), VX_MASK, PPCSPE, { RS, RA, RB } }, 3496 - 3497 - { "evmhossfaaw",VX(4, 1287), VX_MASK, PPCSPE, { RS, RA, RB } }, 3498 - { "evmhossiaaw",VX(4, 1285), VX_MASK, PPCSPE, { RS, RA, RB } }, 3499 - { "evmhosmfaaw",VX(4, 1295), VX_MASK, PPCSPE, { RS, RA, RB } }, 3500 - { "evmhosmiaaw",VX(4, 1293), VX_MASK, PPCSPE, { RS, RA, RB } }, 3501 - { "evmhousiaaw",VX(4, 1284), VX_MASK, PPCSPE, { RS, RA, RB } }, 3502 - { "evmhoumiaaw",VX(4, 1292), VX_MASK, PPCSPE, { RS, RA, RB } }, 3503 - { "evmhessfaaw",VX(4, 1283), VX_MASK, PPCSPE, { RS, RA, RB } }, 3504 - { "evmhessiaaw",VX(4, 1281), VX_MASK, PPCSPE, { RS, RA, RB } }, 3505 - { "evmhesmfaaw",VX(4, 1291), VX_MASK, PPCSPE, { RS, RA, RB } }, 3506 - { "evmhesmiaaw",VX(4, 1289), VX_MASK, PPCSPE, { RS, RA, RB } }, 3507 - { "evmheusiaaw",VX(4, 1280), VX_MASK, PPCSPE, { RS, RA, RB } }, 3508 - { "evmheumiaaw",VX(4, 1288), VX_MASK, PPCSPE, { RS, RA, RB } }, 3509 - 3510 - { "evmhossfanw",VX(4, 1415), VX_MASK, PPCSPE, { RS, RA, RB } }, 3511 - { "evmhossianw",VX(4, 1413), VX_MASK, PPCSPE, { RS, RA, RB } }, 3512 - { "evmhosmfanw",VX(4, 1423), VX_MASK, PPCSPE, { RS, RA, RB } }, 3513 - { "evmhosmianw",VX(4, 1421), VX_MASK, PPCSPE, { RS, RA, RB } }, 3514 - { "evmhousianw",VX(4, 1412), VX_MASK, PPCSPE, { RS, RA, RB } }, 3515 - { "evmhoumianw",VX(4, 1420), VX_MASK, PPCSPE, { RS, RA, RB } }, 3516 - { "evmhessfanw",VX(4, 1411), VX_MASK, PPCSPE, { RS, RA, RB } }, 3517 - { "evmhessianw",VX(4, 1409), VX_MASK, PPCSPE, { RS, RA, RB } }, 3518 - { "evmhesmfanw",VX(4, 1419), VX_MASK, PPCSPE, { RS, RA, RB } }, 3519 - { "evmhesmianw",VX(4, 1417), VX_MASK, PPCSPE, { RS, RA, RB } }, 3520 - { "evmheusianw",VX(4, 1408), VX_MASK, PPCSPE, { RS, RA, RB } }, 3521 - { "evmheumianw",VX(4, 1416), VX_MASK, PPCSPE, { RS, RA, RB } }, 3522 - 3523 - { "evmhogsmfaa",VX(4, 1327), VX_MASK, PPCSPE, { RS, RA, RB } }, 3524 - { "evmhogsmiaa",VX(4, 1325), VX_MASK, PPCSPE, { RS, RA, RB } }, 3525 - { "evmhogumiaa",VX(4, 1324), VX_MASK, PPCSPE, { RS, RA, RB } }, 3526 - { "evmhegsmfaa",VX(4, 1323), VX_MASK, PPCSPE, { RS, RA, RB } }, 3527 - { "evmhegsmiaa",VX(4, 1321), VX_MASK, PPCSPE, { RS, RA, RB } }, 3528 - { "evmhegumiaa",VX(4, 1320), VX_MASK, PPCSPE, { RS, RA, RB } }, 3529 - 3530 - { "evmhogsmfan",VX(4, 1455), VX_MASK, PPCSPE, { RS, RA, RB } }, 3531 - { "evmhogsmian",VX(4, 1453), VX_MASK, PPCSPE, { RS, RA, RB } }, 3532 - { "evmhogumian",VX(4, 1452), VX_MASK, PPCSPE, { RS, RA, RB } }, 3533 - { "evmhegsmfan",VX(4, 1451), VX_MASK, PPCSPE, { RS, RA, RB } }, 3534 - { "evmhegsmian",VX(4, 1449), VX_MASK, PPCSPE, { RS, RA, RB } }, 3535 - { "evmhegumian",VX(4, 1448), VX_MASK, PPCSPE, { RS, RA, RB } }, 3536 - 3537 - { "evmwhssf", VX(4, 1095), VX_MASK, PPCSPE, { RS, RA, RB } }, 3538 - { "evmwhssfa", VX(4, 1127), VX_MASK, PPCSPE, { RS, RA, RB } }, 3539 - { "evmwhsmf", VX(4, 1103), VX_MASK, PPCSPE, { RS, RA, RB } }, 3540 - { "evmwhsmfa", VX(4, 1135), VX_MASK, PPCSPE, { RS, RA, RB } }, 3541 - { "evmwhsmi", VX(4, 1101), VX_MASK, PPCSPE, { RS, RA, RB } }, 3542 - { "evmwhsmia", VX(4, 1133), VX_MASK, PPCSPE, { RS, RA, RB } }, 3543 - { "evmwhumi", VX(4, 1100), VX_MASK, PPCSPE, { RS, RA, RB } }, 3544 - { "evmwhumia", VX(4, 1132), VX_MASK, PPCSPE, { RS, RA, RB } }, 3545 - 3546 - { "evmwlumi", VX(4, 1096), VX_MASK, PPCSPE, { RS, RA, RB } }, 3547 - { "evmwlumia", VX(4, 1128), VX_MASK, PPCSPE, { RS, RA, RB } }, 3548 - 3549 - { "evmwlssiaaw",VX(4, 1345), VX_MASK, PPCSPE, { RS, RA, RB } }, 3550 - { "evmwlsmiaaw",VX(4, 1353), VX_MASK, PPCSPE, { RS, RA, RB } }, 3551 - { "evmwlusiaaw",VX(4, 1344), VX_MASK, PPCSPE, { RS, RA, RB } }, 3552 - { "evmwlumiaaw",VX(4, 1352), VX_MASK, PPCSPE, { RS, RA, RB } }, 3553 - 3554 - { "evmwlssianw",VX(4, 1473), VX_MASK, PPCSPE, { RS, RA, RB } }, 3555 - { "evmwlsmianw",VX(4, 1481), VX_MASK, PPCSPE, { RS, RA, RB } }, 3556 - { "evmwlusianw",VX(4, 1472), VX_MASK, PPCSPE, { RS, RA, RB } }, 3557 - { "evmwlumianw",VX(4, 1480), VX_MASK, PPCSPE, { RS, RA, RB } }, 3558 - 3559 - { "evmwssf", VX(4, 1107), VX_MASK, PPCSPE, { RS, RA, RB } }, 3560 - { "evmwssfa", VX(4, 1139), VX_MASK, PPCSPE, { RS, RA, RB } }, 3561 - { "evmwsmf", VX(4, 1115), VX_MASK, PPCSPE, { RS, RA, RB } }, 3562 - { "evmwsmfa", VX(4, 1147), VX_MASK, PPCSPE, { RS, RA, RB } }, 3563 - { "evmwsmi", VX(4, 1113), VX_MASK, PPCSPE, { RS, RA, RB } }, 3564 - { "evmwsmia", VX(4, 1145), VX_MASK, PPCSPE, { RS, RA, RB } }, 3565 - { "evmwumi", VX(4, 1112), VX_MASK, PPCSPE, { RS, RA, RB } }, 3566 - { "evmwumia", VX(4, 1144), VX_MASK, PPCSPE, { RS, RA, RB } }, 3567 - 3568 - { "evmwssfaa", VX(4, 1363), VX_MASK, PPCSPE, { RS, RA, RB } }, 3569 - { "evmwsmfaa", VX(4, 1371), VX_MASK, PPCSPE, { RS, RA, RB } }, 3570 - { "evmwsmiaa", VX(4, 1369), VX_MASK, PPCSPE, { RS, RA, RB } }, 3571 - { "evmwumiaa", VX(4, 1368), VX_MASK, PPCSPE, { RS, RA, RB } }, 3572 - 3573 - { "evmwssfan", VX(4, 1491), VX_MASK, PPCSPE, { RS, RA, RB } }, 3574 - { "evmwsmfan", VX(4, 1499), VX_MASK, PPCSPE, { RS, RA, RB } }, 3575 - { "evmwsmian", VX(4, 1497), VX_MASK, PPCSPE, { RS, RA, RB } }, 3576 - { "evmwumian", VX(4, 1496), VX_MASK, PPCSPE, { RS, RA, RB } }, 3577 - 3578 - { "evaddssiaaw",VX(4, 1217), VX_MASK, PPCSPE, { RS, RA } }, 3579 - { "evaddsmiaaw",VX(4, 1225), VX_MASK, PPCSPE, { RS, RA } }, 3580 - { "evaddusiaaw",VX(4, 1216), VX_MASK, PPCSPE, { RS, RA } }, 3581 - { "evaddumiaaw",VX(4, 1224), VX_MASK, PPCSPE, { RS, RA } }, 3582 - 3583 - { "evsubfssiaaw",VX(4, 1219), VX_MASK, PPCSPE, { RS, RA } }, 3584 - { "evsubfsmiaaw",VX(4, 1227), VX_MASK, PPCSPE, { RS, RA } }, 3585 - { "evsubfusiaaw",VX(4, 1218), VX_MASK, PPCSPE, { RS, RA } }, 3586 - { "evsubfumiaaw",VX(4, 1226), VX_MASK, PPCSPE, { RS, RA } }, 3587 - 3588 - { "evmra", VX(4, 1220), VX_MASK, PPCSPE, { RS, RA } }, 3589 - 3590 - { "evdivws", VX(4, 1222), VX_MASK, PPCSPE, { RS, RA, RB } }, 3591 - { "evdivwu", VX(4, 1223), VX_MASK, PPCSPE, { RS, RA, RB } }, 3592 - 3593 - { "mulli", OP(7), OP_MASK, PPCCOM, { RT, RA, SI } }, 3594 - { "muli", OP(7), OP_MASK, PWRCOM, { RT, RA, SI } }, 3595 - 3596 - { "subfic", OP(8), OP_MASK, PPCCOM, { RT, RA, SI } }, 3597 - { "sfi", OP(8), OP_MASK, PWRCOM, { RT, RA, SI } }, 3598 - 3599 - { "dozi", OP(9), OP_MASK, M601, { RT, RA, SI } }, 3600 - 3601 - { "bce", B(9,0,0), B_MASK, BOOKE64, { BO, BI, BD } }, 3602 - { "bcel", B(9,0,1), B_MASK, BOOKE64, { BO, BI, BD } }, 3603 - { "bcea", B(9,1,0), B_MASK, BOOKE64, { BO, BI, BDA } }, 3604 - { "bcela", B(9,1,1), B_MASK, BOOKE64, { BO, BI, BDA } }, 3605 - 3606 - { "cmplwi", OPL(10,0), OPL_MASK, PPCCOM, { OBF, RA, UI } }, 3607 - { "cmpldi", OPL(10,1), OPL_MASK, PPC64, { OBF, RA, UI } }, 3608 - { "cmpli", OP(10), OP_MASK, PPC, { BF, L, RA, UI } }, 3609 - { "cmpli", OP(10), OP_MASK, PWRCOM, { BF, RA, UI } }, 3610 - 3611 - { "cmpwi", OPL(11,0), OPL_MASK, PPCCOM, { OBF, RA, SI } }, 3612 - { "cmpdi", OPL(11,1), OPL_MASK, PPC64, { OBF, RA, SI } }, 3613 - { "cmpi", OP(11), OP_MASK, PPC, { BF, L, RA, SI } }, 3614 - { "cmpi", OP(11), OP_MASK, PWRCOM, { BF, RA, SI } }, 3615 - 3616 - { "addic", OP(12), OP_MASK, PPCCOM, { RT, RA, SI } }, 3617 - { "ai", OP(12), OP_MASK, PWRCOM, { RT, RA, SI } }, 3618 - { "subic", OP(12), OP_MASK, PPCCOM, { RT, RA, NSI } }, 3619 - 3620 - { "addic.", OP(13), OP_MASK, PPCCOM, { RT, RA, SI } }, 3621 - { "ai.", OP(13), OP_MASK, PWRCOM, { RT, RA, SI } }, 3622 - { "subic.", OP(13), OP_MASK, PPCCOM, { RT, RA, NSI } }, 3623 - 3624 - { "li", OP(14), DRA_MASK, PPCCOM, { RT, SI } }, 3625 - { "lil", OP(14), DRA_MASK, PWRCOM, { RT, SI } }, 3626 - { "addi", OP(14), OP_MASK, PPCCOM, { RT, RA0, SI } }, 3627 - { "cal", OP(14), OP_MASK, PWRCOM, { RT, D, RA0 } }, 3628 - { "subi", OP(14), OP_MASK, PPCCOM, { RT, RA0, NSI } }, 3629 - { "la", OP(14), OP_MASK, PPCCOM, { RT, D, RA0 } }, 3630 - 3631 - { "lis", OP(15), DRA_MASK, PPCCOM, { RT, SISIGNOPT } }, 3632 - { "liu", OP(15), DRA_MASK, PWRCOM, { RT, SISIGNOPT } }, 3633 - { "addis", OP(15), OP_MASK, PPCCOM, { RT,RA0,SISIGNOPT } }, 3634 - { "cau", OP(15), OP_MASK, PWRCOM, { RT,RA0,SISIGNOPT } }, 3635 - { "subis", OP(15), OP_MASK, PPCCOM, { RT, RA0, NSI } }, 3636 - 3637 - { "bdnz-", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, { BDM } }, 3638 - { "bdnz+", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, { BDP } }, 3639 - { "bdnz", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, { BD } }, 3640 - { "bdn", BBO(16,BODNZ,0,0), BBOATBI_MASK, PWRCOM, { BD } }, 3641 - { "bdnzl-", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, { BDM } }, 3642 - { "bdnzl+", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, { BDP } }, 3643 - { "bdnzl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, { BD } }, 3644 - { "bdnl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PWRCOM, { BD } }, 3645 - { "bdnza-", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, { BDMA } }, 3646 - { "bdnza+", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, { BDPA } }, 3647 - { "bdnza", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, { BDA } }, 3648 - { "bdna", BBO(16,BODNZ,1,0), BBOATBI_MASK, PWRCOM, { BDA } }, 3649 - { "bdnzla-", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, { BDMA } }, 3650 - { "bdnzla+", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, { BDPA } }, 3651 - { "bdnzla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, { BDA } }, 3652 - { "bdnla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PWRCOM, { BDA } }, 3653 - { "bdz-", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, { BDM } }, 3654 - { "bdz+", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, { BDP } }, 3655 - { "bdz", BBO(16,BODZ,0,0), BBOATBI_MASK, COM, { BD } }, 3656 - { "bdzl-", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, { BDM } }, 3657 - { "bdzl+", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, { BDP } }, 3658 - { "bdzl", BBO(16,BODZ,0,1), BBOATBI_MASK, COM, { BD } }, 3659 - { "bdza-", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, { BDMA } }, 3660 - { "bdza+", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, { BDPA } }, 3661 - { "bdza", BBO(16,BODZ,1,0), BBOATBI_MASK, COM, { BDA } }, 3662 - { "bdzla-", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, { BDMA } }, 3663 - { "bdzla+", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, { BDPA } }, 3664 - { "bdzla", BBO(16,BODZ,1,1), BBOATBI_MASK, COM, { BDA } }, 3665 - { "blt-", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3666 - { "blt+", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3667 - { "blt", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM, { CR, BD } }, 3668 - { "bltl-", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3669 - { "bltl+", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3670 - { "bltl", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM, { CR, BD } }, 3671 - { "blta-", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3672 - { "blta+", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3673 - { "blta", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM, { CR, BDA } }, 3674 - { "bltla-", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3675 - { "bltla+", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3676 - { "bltla", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM, { CR, BDA } }, 3677 - { "bgt-", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3678 - { "bgt+", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3679 - { "bgt", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM, { CR, BD } }, 3680 - { "bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3681 - { "bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3682 - { "bgtl", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM, { CR, BD } }, 3683 - { "bgta-", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3684 - { "bgta+", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3685 - { "bgta", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM, { CR, BDA } }, 3686 - { "bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3687 - { "bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3688 - { "bgtla", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM, { CR, BDA } }, 3689 - { "beq-", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3690 - { "beq+", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3691 - { "beq", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM, { CR, BD } }, 3692 - { "beql-", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3693 - { "beql+", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3694 - { "beql", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM, { CR, BD } }, 3695 - { "beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3696 - { "beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3697 - { "beqa", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM, { CR, BDA } }, 3698 - { "beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3699 - { "beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3700 - { "beqla", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM, { CR, BDA } }, 3701 - { "bso-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3702 - { "bso+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3703 - { "bso", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM, { CR, BD } }, 3704 - { "bsol-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3705 - { "bsol+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3706 - { "bsol", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM, { CR, BD } }, 3707 - { "bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3708 - { "bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3709 - { "bsoa", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM, { CR, BDA } }, 3710 - { "bsola-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3711 - { "bsola+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3712 - { "bsola", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM, { CR, BDA } }, 3713 - { "bun-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3714 - { "bun+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3715 - { "bun", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BD } }, 3716 - { "bunl-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3717 - { "bunl+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3718 - { "bunl", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BD } }, 3719 - { "buna-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3720 - { "buna+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3721 - { "buna", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDA } }, 3722 - { "bunla-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3723 - { "bunla+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3724 - { "bunla", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDA } }, 3725 - { "bge-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3726 - { "bge+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3727 - { "bge", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, { CR, BD } }, 3728 - { "bgel-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3729 - { "bgel+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3730 - { "bgel", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, { CR, BD } }, 3731 - { "bgea-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3732 - { "bgea+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3733 - { "bgea", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, { CR, BDA } }, 3734 - { "bgela-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3735 - { "bgela+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3736 - { "bgela", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, { CR, BDA } }, 3737 - { "bnl-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3738 - { "bnl+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3739 - { "bnl", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, { CR, BD } }, 3740 - { "bnll-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3741 - { "bnll+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3742 - { "bnll", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, { CR, BD } }, 3743 - { "bnla-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3744 - { "bnla+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3745 - { "bnla", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, { CR, BDA } }, 3746 - { "bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3747 - { "bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3748 - { "bnlla", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, { CR, BDA } }, 3749 - { "ble-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3750 - { "ble+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3751 - { "ble", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, { CR, BD } }, 3752 - { "blel-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3753 - { "blel+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3754 - { "blel", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, { CR, BD } }, 3755 - { "blea-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3756 - { "blea+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3757 - { "blea", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, { CR, BDA } }, 3758 - { "blela-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3759 - { "blela+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3760 - { "blela", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, { CR, BDA } }, 3761 - { "bng-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3762 - { "bng+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3763 - { "bng", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, { CR, BD } }, 3764 - { "bngl-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3765 - { "bngl+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3766 - { "bngl", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, { CR, BD } }, 3767 - { "bnga-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3768 - { "bnga+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3769 - { "bnga", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, { CR, BDA } }, 3770 - { "bngla-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3771 - { "bngla+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3772 - { "bngla", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, { CR, BDA } }, 3773 - { "bne-", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3774 - { "bne+", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3775 - { "bne", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM, { CR, BD } }, 3776 - { "bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3777 - { "bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3778 - { "bnel", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM, { CR, BD } }, 3779 - { "bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3780 - { "bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3781 - { "bnea", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM, { CR, BDA } }, 3782 - { "bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3783 - { "bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3784 - { "bnela", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM, { CR, BDA } }, 3785 - { "bns-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3786 - { "bns+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3787 - { "bns", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM, { CR, BD } }, 3788 - { "bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3789 - { "bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3790 - { "bnsl", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM, { CR, BD } }, 3791 - { "bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3792 - { "bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3793 - { "bnsa", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM, { CR, BDA } }, 3794 - { "bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3795 - { "bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3796 - { "bnsla", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM, { CR, BDA } }, 3797 - { "bnu-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3798 - { "bnu+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3799 - { "bnu", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, { CR, BD } }, 3800 - { "bnul-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDM } }, 3801 - { "bnul+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BDP } }, 3802 - { "bnul", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, { CR, BD } }, 3803 - { "bnua-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3804 - { "bnua+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3805 - { "bnua", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, { CR, BDA } }, 3806 - { "bnula-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDMA } }, 3807 - { "bnula+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDPA } }, 3808 - { "bnula", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, { CR, BDA } }, 3809 - { "bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, NOPOWER4, { BI, BDM } }, 3810 - { "bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, NOPOWER4, { BI, BDP } }, 3811 - { "bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, { BI, BD } }, 3812 - { "bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, NOPOWER4, { BI, BDM } }, 3813 - { "bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, NOPOWER4, { BI, BDP } }, 3814 - { "bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, { BI, BD } }, 3815 - { "bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, NOPOWER4, { BI, BDMA } }, 3816 - { "bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, NOPOWER4, { BI, BDPA } }, 3817 - { "bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, { BI, BDA } }, 3818 - { "bdnztla-",BBO(16,BODNZT,1,1), BBOY_MASK, NOPOWER4, { BI, BDMA } }, 3819 - { "bdnztla+",BBO(16,BODNZT,1,1), BBOY_MASK, NOPOWER4, { BI, BDPA } }, 3820 - { "bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, { BI, BDA } }, 3821 - { "bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, NOPOWER4, { BI, BDM } }, 3822 - { "bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, NOPOWER4, { BI, BDP } }, 3823 - { "bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, { BI, BD } }, 3824 - { "bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, NOPOWER4, { BI, BDM } }, 3825 - { "bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, NOPOWER4, { BI, BDP } }, 3826 - { "bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, { BI, BD } }, 3827 - { "bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, NOPOWER4, { BI, BDMA } }, 3828 - { "bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, NOPOWER4, { BI, BDPA } }, 3829 - { "bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, { BI, BDA } }, 3830 - { "bdnzfla-",BBO(16,BODNZF,1,1), BBOY_MASK, NOPOWER4, { BI, BDMA } }, 3831 - { "bdnzfla+",BBO(16,BODNZF,1,1), BBOY_MASK, NOPOWER4, { BI, BDPA } }, 3832 - { "bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, { BI, BDA } }, 3833 - { "bt-", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, { BI, BDM } }, 3834 - { "bt+", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, { BI, BDP } }, 3835 - { "bt", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, { BI, BD } }, 3836 - { "bbt", BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM, { BI, BD } }, 3837 - { "btl-", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, { BI, BDM } }, 3838 - { "btl+", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, { BI, BDP } }, 3839 - { "btl", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, { BI, BD } }, 3840 - { "bbtl", BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM, { BI, BD } }, 3841 - { "bta-", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, { BI, BDMA } }, 3842 - { "bta+", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, { BI, BDPA } }, 3843 - { "bta", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, { BI, BDA } }, 3844 - { "bbta", BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM, { BI, BDA } }, 3845 - { "btla-", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, { BI, BDMA } }, 3846 - { "btla+", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, { BI, BDPA } }, 3847 - { "btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, { BI, BDA } }, 3848 - { "bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, { BI, BDA } }, 3849 - { "bf-", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, { BI, BDM } }, 3850 - { "bf+", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, { BI, BDP } }, 3851 - { "bf", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, { BI, BD } }, 3852 - { "bbf", BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM, { BI, BD } }, 3853 - { "bfl-", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, { BI, BDM } }, 3854 - { "bfl+", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, { BI, BDP } }, 3855 - { "bfl", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, { BI, BD } }, 3856 - { "bbfl", BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM, { BI, BD } }, 3857 - { "bfa-", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, { BI, BDMA } }, 3858 - { "bfa+", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, { BI, BDPA } }, 3859 - { "bfa", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, { BI, BDA } }, 3860 - { "bbfa", BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM, { BI, BDA } }, 3861 - { "bfla-", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, { BI, BDMA } }, 3862 - { "bfla+", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, { BI, BDPA } }, 3863 - { "bfla", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, { BI, BDA } }, 3864 - { "bbfla", BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM, { BI, BDA } }, 3865 - { "bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, NOPOWER4, { BI, BDM } }, 3866 - { "bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, NOPOWER4, { BI, BDP } }, 3867 - { "bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, { BI, BD } }, 3868 - { "bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, NOPOWER4, { BI, BDM } }, 3869 - { "bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, NOPOWER4, { BI, BDP } }, 3870 - { "bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, { BI, BD } }, 3871 - { "bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, NOPOWER4, { BI, BDMA } }, 3872 - { "bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, NOPOWER4, { BI, BDPA } }, 3873 - { "bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, { BI, BDA } }, 3874 - { "bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, NOPOWER4, { BI, BDMA } }, 3875 - { "bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, NOPOWER4, { BI, BDPA } }, 3876 - { "bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, { BI, BDA } }, 3877 - { "bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, NOPOWER4, { BI, BDM } }, 3878 - { "bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, NOPOWER4, { BI, BDP } }, 3879 - { "bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, { BI, BD } }, 3880 - { "bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, NOPOWER4, { BI, BDM } }, 3881 - { "bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, NOPOWER4, { BI, BDP } }, 3882 - { "bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, { BI, BD } }, 3883 - { "bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, NOPOWER4, { BI, BDMA } }, 3884 - { "bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, NOPOWER4, { BI, BDPA } }, 3885 - { "bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, { BI, BDA } }, 3886 - { "bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, NOPOWER4, { BI, BDMA } }, 3887 - { "bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, NOPOWER4, { BI, BDPA } }, 3888 - { "bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, { BI, BDA } }, 3889 - { "bc-", B(16,0,0), B_MASK, PPCCOM, { BOE, BI, BDM } }, 3890 - { "bc+", B(16,0,0), B_MASK, PPCCOM, { BOE, BI, BDP } }, 3891 - { "bc", B(16,0,0), B_MASK, COM, { BO, BI, BD } }, 3892 - { "bcl-", B(16,0,1), B_MASK, PPCCOM, { BOE, BI, BDM } }, 3893 - { "bcl+", B(16,0,1), B_MASK, PPCCOM, { BOE, BI, BDP } }, 3894 - { "bcl", B(16,0,1), B_MASK, COM, { BO, BI, BD } }, 3895 - { "bca-", B(16,1,0), B_MASK, PPCCOM, { BOE, BI, BDMA } }, 3896 - { "bca+", B(16,1,0), B_MASK, PPCCOM, { BOE, BI, BDPA } }, 3897 - { "bca", B(16,1,0), B_MASK, COM, { BO, BI, BDA } }, 3898 - { "bcla-", B(16,1,1), B_MASK, PPCCOM, { BOE, BI, BDMA } }, 3899 - { "bcla+", B(16,1,1), B_MASK, PPCCOM, { BOE, BI, BDPA } }, 3900 - { "bcla", B(16,1,1), B_MASK, COM, { BO, BI, BDA } }, 3901 - 3902 - { "sc", SC(17,1,0), SC_MASK, PPC, { LEV } }, 3903 - { "svc", SC(17,0,0), SC_MASK, POWER, { SVC_LEV, FL1, FL2 } }, 3904 - { "svcl", SC(17,0,1), SC_MASK, POWER, { SVC_LEV, FL1, FL2 } }, 3905 - { "svca", SC(17,1,0), SC_MASK, PWRCOM, { SV } }, 3906 - { "svcla", SC(17,1,1), SC_MASK, POWER, { SV } }, 3907 - 3908 - { "b", B(18,0,0), B_MASK, COM, { LI } }, 3909 - { "bl", B(18,0,1), B_MASK, COM, { LI } }, 3910 - { "ba", B(18,1,0), B_MASK, COM, { LIA } }, 3911 - { "bla", B(18,1,1), B_MASK, COM, { LIA } }, 3912 - 3913 - { "mcrf", XL(19,0), XLBB_MASK|(3 << 21)|(3 << 16), COM, { BF, BFA } }, 3914 - 3915 - { "blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } }, 3916 - { "br", XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM, { 0 } }, 3917 - { "blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } }, 3918 - { "brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, { 0 } }, 3919 - { "bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } }, 3920 - { "bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, NOPOWER4, { 0 } }, 3921 - { "bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, POWER4, { 0 } }, 3922 - { "bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, NOPOWER4, { 0 } }, 3923 - { "bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, POWER4, { 0 } }, 3924 - { "bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } }, 3925 - { "bdnzlrl-",XLO(19,BODNZ,16,1), XLBOBIBB_MASK, NOPOWER4, { 0 } }, 3926 - { "bdnzlrl-",XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, POWER4, { 0 } }, 3927 - { "bdnzlrl+",XLO(19,BODNZP,16,1), XLBOBIBB_MASK, NOPOWER4, { 0 } }, 3928 - { "bdnzlrl+",XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, POWER4, { 0 } }, 3929 - { "bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } }, 3930 - { "bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, NOPOWER4, { 0 } }, 3931 - { "bdzlr-", XLO(19,BODZM4,16,0), XLBOBIBB_MASK, POWER4, { 0 } }, 3932 - { "bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, NOPOWER4, { 0 } }, 3933 - { "bdzlr+", XLO(19,BODZP4,16,0), XLBOBIBB_MASK, POWER4, { 0 } }, 3934 - { "bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } }, 3935 - { "bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, NOPOWER4, { 0 } }, 3936 - { "bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, POWER4, { 0 } }, 3937 - { "bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, NOPOWER4, { 0 } }, 3938 - { "bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, POWER4, { 0 } }, 3939 - { "bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 3940 - { "bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3941 - { "bltlr-", XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 3942 - { "bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3943 - { "bltlr+", XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 3944 - { "bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, 3945 - { "bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 3946 - { "bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3947 - { "bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 3948 - { "bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3949 - { "bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 3950 - { "bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, 3951 - { "bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 3952 - { "bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3953 - { "bgtlr-", XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 3954 - { "bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3955 - { "bgtlr+", XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 3956 - { "bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, 3957 - { "bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 3958 - { "bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3959 - { "bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 3960 - { "bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3961 - { "bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 3962 - { "bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, 3963 - { "beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 3964 - { "beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3965 - { "beqlr-", XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 3966 - { "beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3967 - { "beqlr+", XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 3968 - { "beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, 3969 - { "beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 3970 - { "beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3971 - { "beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 3972 - { "beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3973 - { "beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 3974 - { "beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, 3975 - { "bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 3976 - { "bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3977 - { "bsolr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 3978 - { "bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3979 - { "bsolr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 3980 - { "bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, 3981 - { "bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 3982 - { "bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3983 - { "bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 3984 - { "bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3985 - { "bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 3986 - { "bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, 3987 - { "bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 3988 - { "bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3989 - { "bunlr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 3990 - { "bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3991 - { "bunlr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 3992 - { "bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 3993 - { "bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3994 - { "bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 3995 - { "bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3996 - { "bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 3997 - { "bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 3998 - { "bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 3999 - { "bgelr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4000 - { "bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4001 - { "bgelr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4002 - { "bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, 4003 - { "bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4004 - { "bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4005 - { "bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4006 - { "bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4007 - { "bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4008 - { "bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, 4009 - { "bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4010 - { "bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4011 - { "bnllr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4012 - { "bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4013 - { "bnllr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4014 - { "bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, 4015 - { "bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4016 - { "bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4017 - { "bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4018 - { "bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4019 - { "bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4020 - { "bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, 4021 - { "blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4022 - { "blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4023 - { "blelr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4024 - { "blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4025 - { "blelr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4026 - { "bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, 4027 - { "blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4028 - { "blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4029 - { "blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4030 - { "blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4031 - { "blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4032 - { "blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, 4033 - { "bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4034 - { "bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4035 - { "bnglr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4036 - { "bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4037 - { "bnglr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4038 - { "bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, 4039 - { "bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4040 - { "bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4041 - { "bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4042 - { "bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4043 - { "bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4044 - { "bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, 4045 - { "bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4046 - { "bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4047 - { "bnelr-", XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4048 - { "bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4049 - { "bnelr+", XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4050 - { "bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, 4051 - { "bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4052 - { "bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4053 - { "bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4054 - { "bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4055 - { "bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4056 - { "bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, 4057 - { "bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4058 - { "bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4059 - { "bnslr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4060 - { "bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4061 - { "bnslr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4062 - { "bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, { CR } }, 4063 - { "bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4064 - { "bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4065 - { "bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4066 - { "bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4067 - { "bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4068 - { "bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, { CR } }, 4069 - { "bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4070 - { "bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4071 - { "bnulr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4072 - { "bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4073 - { "bnulr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, POWER4, { CR } }, 4074 - { "bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4075 - { "bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4076 - { "bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4077 - { "bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4078 - { "bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, POWER4, { CR } }, 4079 - { "btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, { BI } }, 4080 - { "btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4081 - { "btlr-", XLO(19,BOTM4,16,0), XLBOBB_MASK, POWER4, { BI } }, 4082 - { "btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4083 - { "btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, POWER4, { BI } }, 4084 - { "bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, { BI } }, 4085 - { "btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, { BI } }, 4086 - { "btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4087 - { "btlrl-", XLO(19,BOTM4,16,1), XLBOBB_MASK, POWER4, { BI } }, 4088 - { "btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4089 - { "btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, POWER4, { BI } }, 4090 - { "bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, { BI } }, 4091 - { "bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, { BI } }, 4092 - { "bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4093 - { "bflr-", XLO(19,BOFM4,16,0), XLBOBB_MASK, POWER4, { BI } }, 4094 - { "bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4095 - { "bflr+", XLO(19,BOFP4,16,0), XLBOBB_MASK, POWER4, { BI } }, 4096 - { "bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, { BI } }, 4097 - { "bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, { BI } }, 4098 - { "bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4099 - { "bflrl-", XLO(19,BOFM4,16,1), XLBOBB_MASK, POWER4, { BI } }, 4100 - { "bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4101 - { "bflrl+", XLO(19,BOFP4,16,1), XLBOBB_MASK, POWER4, { BI } }, 4102 - { "bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, { BI } }, 4103 - { "bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, { BI } }, 4104 - { "bdnztlr-",XLO(19,BODNZT,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4105 - { "bdnztlr+",XLO(19,BODNZTP,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4106 - { "bdnztlrl",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, { BI } }, 4107 - { "bdnztlrl-",XLO(19,BODNZT,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4108 - { "bdnztlrl+",XLO(19,BODNZTP,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4109 - { "bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, { BI } }, 4110 - { "bdnzflr-",XLO(19,BODNZF,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4111 - { "bdnzflr+",XLO(19,BODNZFP,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4112 - { "bdnzflrl",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, { BI } }, 4113 - { "bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4114 - { "bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4115 - { "bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, { BI } }, 4116 - { "bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4117 - { "bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4118 - { "bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, { BI } }, 4119 - { "bdztlrl-",XLO(19,BODZT,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4120 - { "bdztlrl+",XLO(19,BODZTP,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4121 - { "bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, { BI } }, 4122 - { "bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4123 - { "bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4124 - { "bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, { BI } }, 4125 - { "bdzflrl-",XLO(19,BODZF,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4126 - { "bdzflrl+",XLO(19,BODZFP,16,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4127 - { "bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM, { BOE, BI } }, 4128 - { "bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM, { BOE, BI } }, 4129 - { "bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM, { BOE, BI } }, 4130 - { "bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM, { BOE, BI } }, 4131 - { "bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, { BO, BI, BH } }, 4132 - { "bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, { BO, BI, BH } }, 4133 - { "bcr", XLLK(19,16,0), XLBB_MASK, PWRCOM, { BO, BI } }, 4134 - { "bcrl", XLLK(19,16,1), XLBB_MASK, PWRCOM, { BO, BI } }, 4135 - { "bclre", XLLK(19,17,0), XLBB_MASK, BOOKE64, { BO, BI } }, 4136 - { "bclrel", XLLK(19,17,1), XLBB_MASK, BOOKE64, { BO, BI } }, 4137 - 4138 - { "rfid", XL(19,18), 0xffffffff, PPC64, { 0 } }, 4139 - 4140 - { "crnot", XL(19,33), XL_MASK, PPCCOM, { BT, BA, BBA } }, 4141 - { "crnor", XL(19,33), XL_MASK, COM, { BT, BA, BB } }, 4142 - { "rfmci", X(19,38), 0xffffffff, PPCRFMCI, { 0 } }, 4143 - 4144 - { "rfi", XL(19,50), 0xffffffff, COM, { 0 } }, 4145 - { "rfci", XL(19,51), 0xffffffff, PPC403 | BOOKE, { 0 } }, 4146 - 4147 - { "rfsvc", XL(19,82), 0xffffffff, POWER, { 0 } }, 4148 - 4149 - { "crandc", XL(19,129), XL_MASK, COM, { BT, BA, BB } }, 4150 - 4151 - { "isync", XL(19,150), 0xffffffff, PPCCOM, { 0 } }, 4152 - { "ics", XL(19,150), 0xffffffff, PWRCOM, { 0 } }, 4153 - 4154 - { "crclr", XL(19,193), XL_MASK, PPCCOM, { BT, BAT, BBA } }, 4155 - { "crxor", XL(19,193), XL_MASK, COM, { BT, BA, BB } }, 4156 - 4157 - { "crnand", XL(19,225), XL_MASK, COM, { BT, BA, BB } }, 4158 - 4159 - { "crand", XL(19,257), XL_MASK, COM, { BT, BA, BB } }, 4160 - 4161 - { "hrfid", XL(19,274), 0xffffffff, POWER5 | CELL, { 0 } }, 4162 - 4163 - { "crset", XL(19,289), XL_MASK, PPCCOM, { BT, BAT, BBA } }, 4164 - { "creqv", XL(19,289), XL_MASK, COM, { BT, BA, BB } }, 4165 - 4166 - { "doze", XL(19,402), 0xffffffff, POWER6, { 0 } }, 4167 - 4168 - { "crorc", XL(19,417), XL_MASK, COM, { BT, BA, BB } }, 4169 - 4170 - { "nap", XL(19,434), 0xffffffff, POWER6, { 0 } }, 4171 - 4172 - { "crmove", XL(19,449), XL_MASK, PPCCOM, { BT, BA, BBA } }, 4173 - { "cror", XL(19,449), XL_MASK, COM, { BT, BA, BB } }, 4174 - 4175 - { "sleep", XL(19,466), 0xffffffff, POWER6, { 0 } }, 4176 - { "rvwinkle", XL(19,498), 0xffffffff, POWER6, { 0 } }, 4177 - 4178 - { "bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, { 0 } }, 4179 - { "bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, { 0 } }, 4180 - { "bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4181 - { "bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4182 - { "bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4183 - { "bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4184 - { "bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4185 - { "bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4186 - { "bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4187 - { "bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4188 - { "bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4189 - { "bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4190 - { "bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4191 - { "bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4192 - { "bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4193 - { "bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4194 - { "bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4195 - { "bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4196 - { "bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4197 - { "bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4198 - { "bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4199 - { "bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4200 - { "beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4201 - { "beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4202 - { "beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4203 - { "beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4204 - { "beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4205 - { "beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4206 - { "beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4207 - { "beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4208 - { "beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4209 - { "beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4210 - { "bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4211 - { "bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4212 - { "bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4213 - { "bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4214 - { "bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4215 - { "bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4216 - { "bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4217 - { "bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4218 - { "bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4219 - { "bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4220 - { "bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4221 - { "bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4222 - { "bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4223 - { "bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4224 - { "bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4225 - { "bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4226 - { "bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4227 - { "bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4228 - { "bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4229 - { "bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4230 - { "bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4231 - { "bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4232 - { "bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4233 - { "bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4234 - { "bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4235 - { "bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4236 - { "bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4237 - { "bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4238 - { "bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4239 - { "bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4240 - { "bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4241 - { "bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4242 - { "bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4243 - { "bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4244 - { "bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4245 - { "bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4246 - { "bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4247 - { "bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4248 - { "bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4249 - { "bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4250 - { "blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4251 - { "blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4252 - { "blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4253 - { "blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4254 - { "blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4255 - { "blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4256 - { "blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4257 - { "blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4258 - { "blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4259 - { "blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4260 - { "bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4261 - { "bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4262 - { "bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4263 - { "bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4264 - { "bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4265 - { "bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4266 - { "bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4267 - { "bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4268 - { "bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4269 - { "bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4270 - { "bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4271 - { "bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4272 - { "bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4273 - { "bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4274 - { "bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4275 - { "bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4276 - { "bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4277 - { "bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4278 - { "bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4279 - { "bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4280 - { "bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4281 - { "bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4282 - { "bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4283 - { "bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4284 - { "bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4285 - { "bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4286 - { "bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4287 - { "bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4288 - { "bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4289 - { "bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4290 - { "bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } }, 4291 - { "bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4292 - { "bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4293 - { "bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4294 - { "bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, POWER4, { CR } }, 4295 - { "bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } }, 4296 - { "bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4297 - { "bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4298 - { "bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, NOPOWER4, { CR } }, 4299 - { "bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, POWER4, { CR } }, 4300 - { "btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, { BI } }, 4301 - { "btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4302 - { "btctr-", XLO(19,BOTM4,528,0), XLBOBB_MASK, POWER4, { BI } }, 4303 - { "btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4304 - { "btctr+", XLO(19,BOTP4,528,0), XLBOBB_MASK, POWER4, { BI } }, 4305 - { "btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, { BI } }, 4306 - { "btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4307 - { "btctrl-", XLO(19,BOTM4,528,1), XLBOBB_MASK, POWER4, { BI } }, 4308 - { "btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4309 - { "btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, POWER4, { BI } }, 4310 - { "bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, { BI } }, 4311 - { "bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4312 - { "bfctr-", XLO(19,BOFM4,528,0), XLBOBB_MASK, POWER4, { BI } }, 4313 - { "bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, NOPOWER4, { BI } }, 4314 - { "bfctr+", XLO(19,BOFP4,528,0), XLBOBB_MASK, POWER4, { BI } }, 4315 - { "bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, { BI } }, 4316 - { "bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4317 - { "bfctrl-", XLO(19,BOFM4,528,1), XLBOBB_MASK, POWER4, { BI } }, 4318 - { "bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, NOPOWER4, { BI } }, 4319 - { "bfctrl+", XLO(19,BOFP4,528,1), XLBOBB_MASK, POWER4, { BI } }, 4320 - { "bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPCCOM, { BOE, BI } }, 4321 - { "bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPCCOM, { BOE, BI } }, 4322 - { "bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPCCOM, { BOE, BI } }, 4323 - { "bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPCCOM, { BOE, BI } }, 4324 - { "bcctr", XLLK(19,528,0), XLBH_MASK, PPCCOM, { BO, BI, BH } }, 4325 - { "bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, { BO, BI, BH } }, 4326 - { "bcc", XLLK(19,528,0), XLBB_MASK, PWRCOM, { BO, BI } }, 4327 - { "bccl", XLLK(19,528,1), XLBB_MASK, PWRCOM, { BO, BI } }, 4328 - { "bcctre", XLLK(19,529,0), XLYBB_MASK, BOOKE64, { BO, BI } }, 4329 - { "bcctrel", XLLK(19,529,1), XLYBB_MASK, BOOKE64, { BO, BI } }, 4330 - 4331 - { "rlwimi", M(20,0), M_MASK, PPCCOM, { RA,RS,SH,MBE,ME } }, 4332 - { "rlimi", M(20,0), M_MASK, PWRCOM, { RA,RS,SH,MBE,ME } }, 4333 - 4334 - { "rlwimi.", M(20,1), M_MASK, PPCCOM, { RA,RS,SH,MBE,ME } }, 4335 - { "rlimi.", M(20,1), M_MASK, PWRCOM, { RA,RS,SH,MBE,ME } }, 4336 - 4337 - { "rotlwi", MME(21,31,0), MMBME_MASK, PPCCOM, { RA, RS, SH } }, 4338 - { "clrlwi", MME(21,31,0), MSHME_MASK, PPCCOM, { RA, RS, MB } }, 4339 - { "rlwinm", M(21,0), M_MASK, PPCCOM, { RA,RS,SH,MBE,ME } }, 4340 - { "rlinm", M(21,0), M_MASK, PWRCOM, { RA,RS,SH,MBE,ME } }, 4341 - { "rotlwi.", MME(21,31,1), MMBME_MASK, PPCCOM, { RA,RS,SH } }, 4342 - { "clrlwi.", MME(21,31,1), MSHME_MASK, PPCCOM, { RA, RS, MB } }, 4343 - { "rlwinm.", M(21,1), M_MASK, PPCCOM, { RA,RS,SH,MBE,ME } }, 4344 - { "rlinm.", M(21,1), M_MASK, PWRCOM, { RA,RS,SH,MBE,ME } }, 4345 - 4346 - { "rlmi", M(22,0), M_MASK, M601, { RA,RS,RB,MBE,ME } }, 4347 - { "rlmi.", M(22,1), M_MASK, M601, { RA,RS,RB,MBE,ME } }, 4348 - 4349 - { "be", B(22,0,0), B_MASK, BOOKE64, { LI } }, 4350 - { "bel", B(22,0,1), B_MASK, BOOKE64, { LI } }, 4351 - { "bea", B(22,1,0), B_MASK, BOOKE64, { LIA } }, 4352 - { "bela", B(22,1,1), B_MASK, BOOKE64, { LIA } }, 4353 - 4354 - { "rotlw", MME(23,31,0), MMBME_MASK, PPCCOM, { RA, RS, RB } }, 4355 - { "rlwnm", M(23,0), M_MASK, PPCCOM, { RA,RS,RB,MBE,ME } }, 4356 - { "rlnm", M(23,0), M_MASK, PWRCOM, { RA,RS,RB,MBE,ME } }, 4357 - { "rotlw.", MME(23,31,1), MMBME_MASK, PPCCOM, { RA, RS, RB } }, 4358 - { "rlwnm.", M(23,1), M_MASK, PPCCOM, { RA,RS,RB,MBE,ME } }, 4359 - { "rlnm.", M(23,1), M_MASK, PWRCOM, { RA,RS,RB,MBE,ME } }, 4360 - 4361 - { "nop", OP(24), 0xffffffff, PPCCOM, { 0 } }, 4362 - { "ori", OP(24), OP_MASK, PPCCOM, { RA, RS, UI } }, 4363 - { "oril", OP(24), OP_MASK, PWRCOM, { RA, RS, UI } }, 4364 - 4365 - { "oris", OP(25), OP_MASK, PPCCOM, { RA, RS, UI } }, 4366 - { "oriu", OP(25), OP_MASK, PWRCOM, { RA, RS, UI } }, 4367 - 4368 - { "xori", OP(26), OP_MASK, PPCCOM, { RA, RS, UI } }, 4369 - { "xoril", OP(26), OP_MASK, PWRCOM, { RA, RS, UI } }, 4370 - 4371 - { "xoris", OP(27), OP_MASK, PPCCOM, { RA, RS, UI } }, 4372 - { "xoriu", OP(27), OP_MASK, PWRCOM, { RA, RS, UI } }, 4373 - 4374 - { "andi.", OP(28), OP_MASK, PPCCOM, { RA, RS, UI } }, 4375 - { "andil.", OP(28), OP_MASK, PWRCOM, { RA, RS, UI } }, 4376 - 4377 - { "andis.", OP(29), OP_MASK, PPCCOM, { RA, RS, UI } }, 4378 - { "andiu.", OP(29), OP_MASK, PWRCOM, { RA, RS, UI } }, 4379 - 4380 - { "rotldi", MD(30,0,0), MDMB_MASK, PPC64, { RA, RS, SH6 } }, 4381 - { "clrldi", MD(30,0,0), MDSH_MASK, PPC64, { RA, RS, MB6 } }, 4382 - { "rldicl", MD(30,0,0), MD_MASK, PPC64, { RA, RS, SH6, MB6 } }, 4383 - { "rotldi.", MD(30,0,1), MDMB_MASK, PPC64, { RA, RS, SH6 } }, 4384 - { "clrldi.", MD(30,0,1), MDSH_MASK, PPC64, { RA, RS, MB6 } }, 4385 - { "rldicl.", MD(30,0,1), MD_MASK, PPC64, { RA, RS, SH6, MB6 } }, 4386 - 4387 - { "rldicr", MD(30,1,0), MD_MASK, PPC64, { RA, RS, SH6, ME6 } }, 4388 - { "rldicr.", MD(30,1,1), MD_MASK, PPC64, { RA, RS, SH6, ME6 } }, 4389 - 4390 - { "rldic", MD(30,2,0), MD_MASK, PPC64, { RA, RS, SH6, MB6 } }, 4391 - { "rldic.", MD(30,2,1), MD_MASK, PPC64, { RA, RS, SH6, MB6 } }, 4392 - 4393 - { "rldimi", MD(30,3,0), MD_MASK, PPC64, { RA, RS, SH6, MB6 } }, 4394 - { "rldimi.", MD(30,3,1), MD_MASK, PPC64, { RA, RS, SH6, MB6 } }, 4395 - 4396 - { "rotld", MDS(30,8,0), MDSMB_MASK, PPC64, { RA, RS, RB } }, 4397 - { "rldcl", MDS(30,8,0), MDS_MASK, PPC64, { RA, RS, RB, MB6 } }, 4398 - { "rotld.", MDS(30,8,1), MDSMB_MASK, PPC64, { RA, RS, RB } }, 4399 - { "rldcl.", MDS(30,8,1), MDS_MASK, PPC64, { RA, RS, RB, MB6 } }, 4400 - 4401 - { "rldcr", MDS(30,9,0), MDS_MASK, PPC64, { RA, RS, RB, ME6 } }, 4402 - { "rldcr.", MDS(30,9,1), MDS_MASK, PPC64, { RA, RS, RB, ME6 } }, 4403 - 4404 - { "cmpw", XOPL(31,0,0), XCMPL_MASK, PPCCOM, { OBF, RA, RB } }, 4405 - { "cmpd", XOPL(31,0,1), XCMPL_MASK, PPC64, { OBF, RA, RB } }, 4406 - { "cmp", X(31,0), XCMP_MASK, PPC, { BF, L, RA, RB } }, 4407 - { "cmp", X(31,0), XCMPL_MASK, PWRCOM, { BF, RA, RB } }, 4408 - 4409 - { "twlgt", XTO(31,4,TOLGT), XTO_MASK, PPCCOM, { RA, RB } }, 4410 - { "tlgt", XTO(31,4,TOLGT), XTO_MASK, PWRCOM, { RA, RB } }, 4411 - { "twllt", XTO(31,4,TOLLT), XTO_MASK, PPCCOM, { RA, RB } }, 4412 - { "tllt", XTO(31,4,TOLLT), XTO_MASK, PWRCOM, { RA, RB } }, 4413 - { "tweq", XTO(31,4,TOEQ), XTO_MASK, PPCCOM, { RA, RB } }, 4414 - { "teq", XTO(31,4,TOEQ), XTO_MASK, PWRCOM, { RA, RB } }, 4415 - { "twlge", XTO(31,4,TOLGE), XTO_MASK, PPCCOM, { RA, RB } }, 4416 - { "tlge", XTO(31,4,TOLGE), XTO_MASK, PWRCOM, { RA, RB } }, 4417 - { "twlnl", XTO(31,4,TOLNL), XTO_MASK, PPCCOM, { RA, RB } }, 4418 - { "tlnl", XTO(31,4,TOLNL), XTO_MASK, PWRCOM, { RA, RB } }, 4419 - { "twlle", XTO(31,4,TOLLE), XTO_MASK, PPCCOM, { RA, RB } }, 4420 - { "tlle", XTO(31,4,TOLLE), XTO_MASK, PWRCOM, { RA, RB } }, 4421 - { "twlng", XTO(31,4,TOLNG), XTO_MASK, PPCCOM, { RA, RB } }, 4422 - { "tlng", XTO(31,4,TOLNG), XTO_MASK, PWRCOM, { RA, RB } }, 4423 - { "twgt", XTO(31,4,TOGT), XTO_MASK, PPCCOM, { RA, RB } }, 4424 - { "tgt", XTO(31,4,TOGT), XTO_MASK, PWRCOM, { RA, RB } }, 4425 - { "twge", XTO(31,4,TOGE), XTO_MASK, PPCCOM, { RA, RB } }, 4426 - { "tge", XTO(31,4,TOGE), XTO_MASK, PWRCOM, { RA, RB } }, 4427 - { "twnl", XTO(31,4,TONL), XTO_MASK, PPCCOM, { RA, RB } }, 4428 - { "tnl", XTO(31,4,TONL), XTO_MASK, PWRCOM, { RA, RB } }, 4429 - { "twlt", XTO(31,4,TOLT), XTO_MASK, PPCCOM, { RA, RB } }, 4430 - { "tlt", XTO(31,4,TOLT), XTO_MASK, PWRCOM, { RA, RB } }, 4431 - { "twle", XTO(31,4,TOLE), XTO_MASK, PPCCOM, { RA, RB } }, 4432 - { "tle", XTO(31,4,TOLE), XTO_MASK, PWRCOM, { RA, RB } }, 4433 - { "twng", XTO(31,4,TONG), XTO_MASK, PPCCOM, { RA, RB } }, 4434 - { "tng", XTO(31,4,TONG), XTO_MASK, PWRCOM, { RA, RB } }, 4435 - { "twne", XTO(31,4,TONE), XTO_MASK, PPCCOM, { RA, RB } }, 4436 - { "tne", XTO(31,4,TONE), XTO_MASK, PWRCOM, { RA, RB } }, 4437 - { "trap", XTO(31,4,TOU), 0xffffffff, PPCCOM, { 0 } }, 4438 - { "tw", X(31,4), X_MASK, PPCCOM, { TO, RA, RB } }, 4439 - { "t", X(31,4), X_MASK, PWRCOM, { TO, RA, RB } }, 4440 - 4441 - { "subfc", XO(31,8,0,0), XO_MASK, PPCCOM, { RT, RA, RB } }, 4442 - { "sf", XO(31,8,0,0), XO_MASK, PWRCOM, { RT, RA, RB } }, 4443 - { "subc", XO(31,8,0,0), XO_MASK, PPC, { RT, RB, RA } }, 4444 - { "subfc.", XO(31,8,0,1), XO_MASK, PPCCOM, { RT, RA, RB } }, 4445 - { "sf.", XO(31,8,0,1), XO_MASK, PWRCOM, { RT, RA, RB } }, 4446 - { "subc.", XO(31,8,0,1), XO_MASK, PPCCOM, { RT, RB, RA } }, 4447 - { "subfco", XO(31,8,1,0), XO_MASK, PPCCOM, { RT, RA, RB } }, 4448 - { "sfo", XO(31,8,1,0), XO_MASK, PWRCOM, { RT, RA, RB } }, 4449 - { "subco", XO(31,8,1,0), XO_MASK, PPC, { RT, RB, RA } }, 4450 - { "subfco.", XO(31,8,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, 4451 - { "sfo.", XO(31,8,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, 4452 - { "subco.", XO(31,8,1,1), XO_MASK, PPC, { RT, RB, RA } }, 4453 - 4454 - { "mulhdu", XO(31,9,0,0), XO_MASK, PPC64, { RT, RA, RB } }, 4455 - { "mulhdu.", XO(31,9,0,1), XO_MASK, PPC64, { RT, RA, RB } }, 4456 - 4457 - { "addc", XO(31,10,0,0), XO_MASK, PPCCOM, { RT, RA, RB } }, 4458 - { "a", XO(31,10,0,0), XO_MASK, PWRCOM, { RT, RA, RB } }, 4459 - { "addc.", XO(31,10,0,1), XO_MASK, PPCCOM, { RT, RA, RB } }, 4460 - { "a.", XO(31,10,0,1), XO_MASK, PWRCOM, { RT, RA, RB } }, 4461 - { "addco", XO(31,10,1,0), XO_MASK, PPCCOM, { RT, RA, RB } }, 4462 - { "ao", XO(31,10,1,0), XO_MASK, PWRCOM, { RT, RA, RB } }, 4463 - { "addco.", XO(31,10,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, 4464 - { "ao.", XO(31,10,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, 4465 - 4466 - { "mulhwu", XO(31,11,0,0), XO_MASK, PPC, { RT, RA, RB } }, 4467 - { "mulhwu.", XO(31,11,0,1), XO_MASK, PPC, { RT, RA, RB } }, 4468 - 4469 - { "isellt", X(31,15), X_MASK, PPCISEL, { RT, RA, RB } }, 4470 - { "iselgt", X(31,47), X_MASK, PPCISEL, { RT, RA, RB } }, 4471 - { "iseleq", X(31,79), X_MASK, PPCISEL, { RT, RA, RB } }, 4472 - { "isel", XISEL(31,15), XISEL_MASK, PPCISEL, { RT, RA, RB, CRB } }, 4473 - 4474 - { "mfocrf", XFXM(31,19,0,1), XFXFXM_MASK, COM, { RT, FXM } }, 4475 - { "mfcr", X(31,19), XRARB_MASK, NOPOWER4 | COM, { RT } }, 4476 - { "mfcr", X(31,19), XFXFXM_MASK, POWER4, { RT, FXM4 } }, 4477 - 4478 - { "lwarx", X(31,20), XEH_MASK, PPC, { RT, RA0, RB, EH } }, 4479 - 4480 - { "ldx", X(31,21), X_MASK, PPC64, { RT, RA0, RB } }, 4481 - 4482 - { "icbt", X(31,22), X_MASK, BOOKE|PPCE300, { CT, RA, RB } }, 4483 - { "icbt", X(31,262), XRT_MASK, PPC403, { RA, RB } }, 4484 - 4485 - { "lwzx", X(31,23), X_MASK, PPCCOM, { RT, RA0, RB } }, 4486 - { "lx", X(31,23), X_MASK, PWRCOM, { RT, RA, RB } }, 4487 - 4488 - { "slw", XRC(31,24,0), X_MASK, PPCCOM, { RA, RS, RB } }, 4489 - { "sl", XRC(31,24,0), X_MASK, PWRCOM, { RA, RS, RB } }, 4490 - { "slw.", XRC(31,24,1), X_MASK, PPCCOM, { RA, RS, RB } }, 4491 - { "sl.", XRC(31,24,1), X_MASK, PWRCOM, { RA, RS, RB } }, 4492 - 4493 - { "cntlzw", XRC(31,26,0), XRB_MASK, PPCCOM, { RA, RS } }, 4494 - { "cntlz", XRC(31,26,0), XRB_MASK, PWRCOM, { RA, RS } }, 4495 - { "cntlzw.", XRC(31,26,1), XRB_MASK, PPCCOM, { RA, RS } }, 4496 - { "cntlz.", XRC(31,26,1), XRB_MASK, PWRCOM, { RA, RS } }, 4497 - 4498 - { "sld", XRC(31,27,0), X_MASK, PPC64, { RA, RS, RB } }, 4499 - { "sld.", XRC(31,27,1), X_MASK, PPC64, { RA, RS, RB } }, 4500 - 4501 - { "and", XRC(31,28,0), X_MASK, COM, { RA, RS, RB } }, 4502 - { "and.", XRC(31,28,1), X_MASK, COM, { RA, RS, RB } }, 4503 - 4504 - { "maskg", XRC(31,29,0), X_MASK, M601, { RA, RS, RB } }, 4505 - { "maskg.", XRC(31,29,1), X_MASK, M601, { RA, RS, RB } }, 4506 - 4507 - { "icbte", X(31,30), X_MASK, BOOKE64, { CT, RA, RB } }, 4508 - 4509 - { "lwzxe", X(31,31), X_MASK, BOOKE64, { RT, RA0, RB } }, 4510 - 4511 - { "cmplw", XOPL(31,32,0), XCMPL_MASK, PPCCOM, { OBF, RA, RB } }, 4512 - { "cmpld", XOPL(31,32,1), XCMPL_MASK, PPC64, { OBF, RA, RB } }, 4513 - { "cmpl", X(31,32), XCMP_MASK, PPC, { BF, L, RA, RB } }, 4514 - { "cmpl", X(31,32), XCMPL_MASK, PWRCOM, { BF, RA, RB } }, 4515 - 4516 - { "subf", XO(31,40,0,0), XO_MASK, PPC, { RT, RA, RB } }, 4517 - { "sub", XO(31,40,0,0), XO_MASK, PPC, { RT, RB, RA } }, 4518 - { "subf.", XO(31,40,0,1), XO_MASK, PPC, { RT, RA, RB } }, 4519 - { "sub.", XO(31,40,0,1), XO_MASK, PPC, { RT, RB, RA } }, 4520 - { "subfo", XO(31,40,1,0), XO_MASK, PPC, { RT, RA, RB } }, 4521 - { "subo", XO(31,40,1,0), XO_MASK, PPC, { RT, RB, RA } }, 4522 - { "subfo.", XO(31,40,1,1), XO_MASK, PPC, { RT, RA, RB } }, 4523 - { "subo.", XO(31,40,1,1), XO_MASK, PPC, { RT, RB, RA } }, 4524 - 4525 - { "ldux", X(31,53), X_MASK, PPC64, { RT, RAL, RB } }, 4526 - 4527 - { "dcbst", X(31,54), XRT_MASK, PPC, { RA, RB } }, 4528 - 4529 - { "lwzux", X(31,55), X_MASK, PPCCOM, { RT, RAL, RB } }, 4530 - { "lux", X(31,55), X_MASK, PWRCOM, { RT, RA, RB } }, 4531 - 4532 - { "dcbste", X(31,62), XRT_MASK, BOOKE64, { RA, RB } }, 4533 - 4534 - { "lwzuxe", X(31,63), X_MASK, BOOKE64, { RT, RAL, RB } }, 4535 - 4536 - { "cntlzd", XRC(31,58,0), XRB_MASK, PPC64, { RA, RS } }, 4537 - { "cntlzd.", XRC(31,58,1), XRB_MASK, PPC64, { RA, RS } }, 4538 - 4539 - { "andc", XRC(31,60,0), X_MASK, COM, { RA, RS, RB } }, 4540 - { "andc.", XRC(31,60,1), X_MASK, COM, { RA, RS, RB } }, 4541 - 4542 - { "tdlgt", XTO(31,68,TOLGT), XTO_MASK, PPC64, { RA, RB } }, 4543 - { "tdllt", XTO(31,68,TOLLT), XTO_MASK, PPC64, { RA, RB } }, 4544 - { "tdeq", XTO(31,68,TOEQ), XTO_MASK, PPC64, { RA, RB } }, 4545 - { "tdlge", XTO(31,68,TOLGE), XTO_MASK, PPC64, { RA, RB } }, 4546 - { "tdlnl", XTO(31,68,TOLNL), XTO_MASK, PPC64, { RA, RB } }, 4547 - { "tdlle", XTO(31,68,TOLLE), XTO_MASK, PPC64, { RA, RB } }, 4548 - { "tdlng", XTO(31,68,TOLNG), XTO_MASK, PPC64, { RA, RB } }, 4549 - { "tdgt", XTO(31,68,TOGT), XTO_MASK, PPC64, { RA, RB } }, 4550 - { "tdge", XTO(31,68,TOGE), XTO_MASK, PPC64, { RA, RB } }, 4551 - { "tdnl", XTO(31,68,TONL), XTO_MASK, PPC64, { RA, RB } }, 4552 - { "tdlt", XTO(31,68,TOLT), XTO_MASK, PPC64, { RA, RB } }, 4553 - { "tdle", XTO(31,68,TOLE), XTO_MASK, PPC64, { RA, RB } }, 4554 - { "tdng", XTO(31,68,TONG), XTO_MASK, PPC64, { RA, RB } }, 4555 - { "tdne", XTO(31,68,TONE), XTO_MASK, PPC64, { RA, RB } }, 4556 - { "td", X(31,68), X_MASK, PPC64, { TO, RA, RB } }, 4557 - 4558 - { "mulhd", XO(31,73,0,0), XO_MASK, PPC64, { RT, RA, RB } }, 4559 - { "mulhd.", XO(31,73,0,1), XO_MASK, PPC64, { RT, RA, RB } }, 4560 - 4561 - { "mulhw", XO(31,75,0,0), XO_MASK, PPC, { RT, RA, RB } }, 4562 - { "mulhw.", XO(31,75,0,1), XO_MASK, PPC, { RT, RA, RB } }, 4563 - 4564 - { "dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440, { RA, RS, RB } }, 4565 - { "dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440, { RA, RS, RB } }, 4566 - 4567 - { "mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, { SR, RS } }, 4568 - 4569 - { "mfmsr", X(31,83), XRARB_MASK, COM, { RT } }, 4570 - 4571 - { "ldarx", X(31,84), XEH_MASK, PPC64, { RT, RA0, RB, EH } }, 4572 - 4573 - { "dcbfl", XOPL(31,86,1), XRT_MASK, POWER5, { RA, RB } }, 4574 - { "dcbf", X(31,86), XLRT_MASK, PPC, { RA, RB, XRT_L } }, 4575 - 4576 - { "lbzx", X(31,87), X_MASK, COM, { RT, RA0, RB } }, 4577 - 4578 - { "dcbfe", X(31,94), XRT_MASK, BOOKE64, { RA, RB } }, 4579 - 4580 - { "lbzxe", X(31,95), X_MASK, BOOKE64, { RT, RA0, RB } }, 4581 - 4582 - { "neg", XO(31,104,0,0), XORB_MASK, COM, { RT, RA } }, 4583 - { "neg.", XO(31,104,0,1), XORB_MASK, COM, { RT, RA } }, 4584 - { "nego", XO(31,104,1,0), XORB_MASK, COM, { RT, RA } }, 4585 - { "nego.", XO(31,104,1,1), XORB_MASK, COM, { RT, RA } }, 4586 - 4587 - { "mul", XO(31,107,0,0), XO_MASK, M601, { RT, RA, RB } }, 4588 - { "mul.", XO(31,107,0,1), XO_MASK, M601, { RT, RA, RB } }, 4589 - { "mulo", XO(31,107,1,0), XO_MASK, M601, { RT, RA, RB } }, 4590 - { "mulo.", XO(31,107,1,1), XO_MASK, M601, { RT, RA, RB } }, 4591 - 4592 - { "mtsrdin", X(31,114), XRA_MASK, PPC64, { RS, RB } }, 4593 - 4594 - { "clf", X(31,118), XTO_MASK, POWER, { RA, RB } }, 4595 - 4596 - { "lbzux", X(31,119), X_MASK, COM, { RT, RAL, RB } }, 4597 - 4598 - { "popcntb", X(31,122), XRB_MASK, POWER5, { RA, RS } }, 4599 - 4600 - { "not", XRC(31,124,0), X_MASK, COM, { RA, RS, RBS } }, 4601 - { "nor", XRC(31,124,0), X_MASK, COM, { RA, RS, RB } }, 4602 - { "not.", XRC(31,124,1), X_MASK, COM, { RA, RS, RBS } }, 4603 - { "nor.", XRC(31,124,1), X_MASK, COM, { RA, RS, RB } }, 4604 - 4605 - { "lwarxe", X(31,126), X_MASK, BOOKE64, { RT, RA0, RB } }, 4606 - 4607 - { "lbzuxe", X(31,127), X_MASK, BOOKE64, { RT, RAL, RB } }, 4608 - 4609 - { "wrtee", X(31,131), XRARB_MASK, PPC403 | BOOKE, { RS } }, 4610 - 4611 - { "dcbtstls",X(31,134), X_MASK, PPCCHLK, { CT, RA, RB }}, 4612 - 4613 - { "subfe", XO(31,136,0,0), XO_MASK, PPCCOM, { RT, RA, RB } }, 4614 - { "sfe", XO(31,136,0,0), XO_MASK, PWRCOM, { RT, RA, RB } }, 4615 - { "subfe.", XO(31,136,0,1), XO_MASK, PPCCOM, { RT, RA, RB } }, 4616 - { "sfe.", XO(31,136,0,1), XO_MASK, PWRCOM, { RT, RA, RB } }, 4617 - { "subfeo", XO(31,136,1,0), XO_MASK, PPCCOM, { RT, RA, RB } }, 4618 - { "sfeo", XO(31,136,1,0), XO_MASK, PWRCOM, { RT, RA, RB } }, 4619 - { "subfeo.", XO(31,136,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, 4620 - { "sfeo.", XO(31,136,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, 4621 - 4622 - { "adde", XO(31,138,0,0), XO_MASK, PPCCOM, { RT, RA, RB } }, 4623 - { "ae", XO(31,138,0,0), XO_MASK, PWRCOM, { RT, RA, RB } }, 4624 - { "adde.", XO(31,138,0,1), XO_MASK, PPCCOM, { RT, RA, RB } }, 4625 - { "ae.", XO(31,138,0,1), XO_MASK, PWRCOM, { RT, RA, RB } }, 4626 - { "addeo", XO(31,138,1,0), XO_MASK, PPCCOM, { RT, RA, RB } }, 4627 - { "aeo", XO(31,138,1,0), XO_MASK, PWRCOM, { RT, RA, RB } }, 4628 - { "addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, 4629 - { "aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, 4630 - 4631 - { "dcbtstlse",X(31,142),X_MASK, PPCCHLK64, { CT, RA, RB }}, 4632 - 4633 - { "mtocrf", XFXM(31,144,0,1), XFXFXM_MASK, COM, { FXM, RS } }, 4634 - { "mtcr", XFXM(31,144,0xff,0), XRARB_MASK, COM, { RS }}, 4635 - { "mtcrf", X(31,144), XFXFXM_MASK, COM, { FXM, RS } }, 4636 - 4637 - { "mtmsr", X(31,146), XRARB_MASK, COM, { RS } }, 4638 - 4639 - { "stdx", X(31,149), X_MASK, PPC64, { RS, RA0, RB } }, 4640 - 4641 - { "stwcx.", XRC(31,150,1), X_MASK, PPC, { RS, RA0, RB } }, 4642 - 4643 - { "stwx", X(31,151), X_MASK, PPCCOM, { RS, RA0, RB } }, 4644 - { "stx", X(31,151), X_MASK, PWRCOM, { RS, RA, RB } }, 4645 - 4646 - { "stwcxe.", XRC(31,158,1), X_MASK, BOOKE64, { RS, RA0, RB } }, 4647 - 4648 - { "stwxe", X(31,159), X_MASK, BOOKE64, { RS, RA0, RB } }, 4649 - 4650 - { "slq", XRC(31,152,0), X_MASK, M601, { RA, RS, RB } }, 4651 - { "slq.", XRC(31,152,1), X_MASK, M601, { RA, RS, RB } }, 4652 - 4653 - { "sle", XRC(31,153,0), X_MASK, M601, { RA, RS, RB } }, 4654 - { "sle.", XRC(31,153,1), X_MASK, M601, { RA, RS, RB } }, 4655 - 4656 - { "prtyw", X(31,154), XRB_MASK, POWER6, { RA, RS } }, 4657 - 4658 - { "wrteei", X(31,163), XE_MASK, PPC403 | BOOKE, { E } }, 4659 - 4660 - { "dcbtls", X(31,166), X_MASK, PPCCHLK, { CT, RA, RB }}, 4661 - { "dcbtlse", X(31,174), X_MASK, PPCCHLK64, { CT, RA, RB }}, 4662 - 4663 - { "mtmsrd", X(31,178), XRLARB_MASK, PPC64, { RS, MTMSRD_L } }, 4664 - 4665 - { "stdux", X(31,181), X_MASK, PPC64, { RS, RAS, RB } }, 4666 - 4667 - { "stwux", X(31,183), X_MASK, PPCCOM, { RS, RAS, RB } }, 4668 - { "stux", X(31,183), X_MASK, PWRCOM, { RS, RA0, RB } }, 4669 - 4670 - { "sliq", XRC(31,184,0), X_MASK, M601, { RA, RS, SH } }, 4671 - { "sliq.", XRC(31,184,1), X_MASK, M601, { RA, RS, SH } }, 4672 - 4673 - { "prtyd", X(31,186), XRB_MASK, POWER6, { RA, RS } }, 4674 - 4675 - { "stwuxe", X(31,191), X_MASK, BOOKE64, { RS, RAS, RB } }, 4676 - 4677 - { "subfze", XO(31,200,0,0), XORB_MASK, PPCCOM, { RT, RA } }, 4678 - { "sfze", XO(31,200,0,0), XORB_MASK, PWRCOM, { RT, RA } }, 4679 - { "subfze.", XO(31,200,0,1), XORB_MASK, PPCCOM, { RT, RA } }, 4680 - { "sfze.", XO(31,200,0,1), XORB_MASK, PWRCOM, { RT, RA } }, 4681 - { "subfzeo", XO(31,200,1,0), XORB_MASK, PPCCOM, { RT, RA } }, 4682 - { "sfzeo", XO(31,200,1,0), XORB_MASK, PWRCOM, { RT, RA } }, 4683 - { "subfzeo.",XO(31,200,1,1), XORB_MASK, PPCCOM, { RT, RA } }, 4684 - { "sfzeo.", XO(31,200,1,1), XORB_MASK, PWRCOM, { RT, RA } }, 4685 - 4686 - { "addze", XO(31,202,0,0), XORB_MASK, PPCCOM, { RT, RA } }, 4687 - { "aze", XO(31,202,0,0), XORB_MASK, PWRCOM, { RT, RA } }, 4688 - { "addze.", XO(31,202,0,1), XORB_MASK, PPCCOM, { RT, RA } }, 4689 - { "aze.", XO(31,202,0,1), XORB_MASK, PWRCOM, { RT, RA } }, 4690 - { "addzeo", XO(31,202,1,0), XORB_MASK, PPCCOM, { RT, RA } }, 4691 - { "azeo", XO(31,202,1,0), XORB_MASK, PWRCOM, { RT, RA } }, 4692 - { "addzeo.", XO(31,202,1,1), XORB_MASK, PPCCOM, { RT, RA } }, 4693 - { "azeo.", XO(31,202,1,1), XORB_MASK, PWRCOM, { RT, RA } }, 4694 - 4695 - { "mtsr", X(31,210), XRB_MASK|(1<<20), COM32, { SR, RS } }, 4696 - 4697 - { "stdcx.", XRC(31,214,1), X_MASK, PPC64, { RS, RA0, RB } }, 4698 - 4699 - { "stbx", X(31,215), X_MASK, COM, { RS, RA0, RB } }, 4700 - 4701 - { "sllq", XRC(31,216,0), X_MASK, M601, { RA, RS, RB } }, 4702 - { "sllq.", XRC(31,216,1), X_MASK, M601, { RA, RS, RB } }, 4703 - 4704 - { "sleq", XRC(31,217,0), X_MASK, M601, { RA, RS, RB } }, 4705 - { "sleq.", XRC(31,217,1), X_MASK, M601, { RA, RS, RB } }, 4706 - 4707 - { "stbxe", X(31,223), X_MASK, BOOKE64, { RS, RA0, RB } }, 4708 - 4709 - { "icblc", X(31,230), X_MASK, PPCCHLK, { CT, RA, RB }}, 4710 - 4711 - { "subfme", XO(31,232,0,0), XORB_MASK, PPCCOM, { RT, RA } }, 4712 - { "sfme", XO(31,232,0,0), XORB_MASK, PWRCOM, { RT, RA } }, 4713 - { "subfme.", XO(31,232,0,1), XORB_MASK, PPCCOM, { RT, RA } }, 4714 - { "sfme.", XO(31,232,0,1), XORB_MASK, PWRCOM, { RT, RA } }, 4715 - { "subfmeo", XO(31,232,1,0), XORB_MASK, PPCCOM, { RT, RA } }, 4716 - { "sfmeo", XO(31,232,1,0), XORB_MASK, PWRCOM, { RT, RA } }, 4717 - { "subfmeo.",XO(31,232,1,1), XORB_MASK, PPCCOM, { RT, RA } }, 4718 - { "sfmeo.", XO(31,232,1,1), XORB_MASK, PWRCOM, { RT, RA } }, 4719 - 4720 - { "mulld", XO(31,233,0,0), XO_MASK, PPC64, { RT, RA, RB } }, 4721 - { "mulld.", XO(31,233,0,1), XO_MASK, PPC64, { RT, RA, RB } }, 4722 - { "mulldo", XO(31,233,1,0), XO_MASK, PPC64, { RT, RA, RB } }, 4723 - { "mulldo.", XO(31,233,1,1), XO_MASK, PPC64, { RT, RA, RB } }, 4724 - 4725 - { "addme", XO(31,234,0,0), XORB_MASK, PPCCOM, { RT, RA } }, 4726 - { "ame", XO(31,234,0,0), XORB_MASK, PWRCOM, { RT, RA } }, 4727 - { "addme.", XO(31,234,0,1), XORB_MASK, PPCCOM, { RT, RA } }, 4728 - { "ame.", XO(31,234,0,1), XORB_MASK, PWRCOM, { RT, RA } }, 4729 - { "addmeo", XO(31,234,1,0), XORB_MASK, PPCCOM, { RT, RA } }, 4730 - { "ameo", XO(31,234,1,0), XORB_MASK, PWRCOM, { RT, RA } }, 4731 - { "addmeo.", XO(31,234,1,1), XORB_MASK, PPCCOM, { RT, RA } }, 4732 - { "ameo.", XO(31,234,1,1), XORB_MASK, PWRCOM, { RT, RA } }, 4733 - 4734 - { "mullw", XO(31,235,0,0), XO_MASK, PPCCOM, { RT, RA, RB } }, 4735 - { "muls", XO(31,235,0,0), XO_MASK, PWRCOM, { RT, RA, RB } }, 4736 - { "mullw.", XO(31,235,0,1), XO_MASK, PPCCOM, { RT, RA, RB } }, 4737 - { "muls.", XO(31,235,0,1), XO_MASK, PWRCOM, { RT, RA, RB } }, 4738 - { "mullwo", XO(31,235,1,0), XO_MASK, PPCCOM, { RT, RA, RB } }, 4739 - { "mulso", XO(31,235,1,0), XO_MASK, PWRCOM, { RT, RA, RB } }, 4740 - { "mullwo.", XO(31,235,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, 4741 - { "mulso.", XO(31,235,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, 4742 - 4743 - { "icblce", X(31,238), X_MASK, PPCCHLK64, { CT, RA, RB }}, 4744 - { "mtsrin", X(31,242), XRA_MASK, PPC32, { RS, RB } }, 4745 - { "mtsri", X(31,242), XRA_MASK, POWER32, { RS, RB } }, 4746 - 4747 - { "dcbtst", X(31,246), X_MASK, PPC, { CT, RA, RB } }, 4748 - 4749 - { "stbux", X(31,247), X_MASK, COM, { RS, RAS, RB } }, 4750 - 4751 - { "slliq", XRC(31,248,0), X_MASK, M601, { RA, RS, SH } }, 4752 - { "slliq.", XRC(31,248,1), X_MASK, M601, { RA, RS, SH } }, 4753 - 4754 - { "dcbtste", X(31,253), X_MASK, BOOKE64, { CT, RA, RB } }, 4755 - 4756 - { "stbuxe", X(31,255), X_MASK, BOOKE64, { RS, RAS, RB } }, 4757 - 4758 - { "mfdcrx", X(31,259), X_MASK, BOOKE, { RS, RA } }, 4759 - 4760 - { "doz", XO(31,264,0,0), XO_MASK, M601, { RT, RA, RB } }, 4761 - { "doz.", XO(31,264,0,1), XO_MASK, M601, { RT, RA, RB } }, 4762 - { "dozo", XO(31,264,1,0), XO_MASK, M601, { RT, RA, RB } }, 4763 - { "dozo.", XO(31,264,1,1), XO_MASK, M601, { RT, RA, RB } }, 4764 - 4765 - { "add", XO(31,266,0,0), XO_MASK, PPCCOM, { RT, RA, RB } }, 4766 - { "cax", XO(31,266,0,0), XO_MASK, PWRCOM, { RT, RA, RB } }, 4767 - { "add.", XO(31,266,0,1), XO_MASK, PPCCOM, { RT, RA, RB } }, 4768 - { "cax.", XO(31,266,0,1), XO_MASK, PWRCOM, { RT, RA, RB } }, 4769 - { "addo", XO(31,266,1,0), XO_MASK, PPCCOM, { RT, RA, RB } }, 4770 - { "caxo", XO(31,266,1,0), XO_MASK, PWRCOM, { RT, RA, RB } }, 4771 - { "addo.", XO(31,266,1,1), XO_MASK, PPCCOM, { RT, RA, RB } }, 4772 - { "caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, { RT, RA, RB } }, 4773 - 4774 - { "tlbiel", X(31,274), XRTLRA_MASK, POWER4, { RB, L } }, 4775 - 4776 - { "mfapidi", X(31,275), X_MASK, BOOKE, { RT, RA } }, 4777 - 4778 - { "lscbx", XRC(31,277,0), X_MASK, M601, { RT, RA, RB } }, 4779 - { "lscbx.", XRC(31,277,1), X_MASK, M601, { RT, RA, RB } }, 4780 - 4781 - { "dcbt", X(31,278), X_MASK, PPC, { CT, RA, RB } }, 4782 - 4783 - { "lhzx", X(31,279), X_MASK, COM, { RT, RA0, RB } }, 4784 - 4785 - { "eqv", XRC(31,284,0), X_MASK, COM, { RA, RS, RB } }, 4786 - { "eqv.", XRC(31,284,1), X_MASK, COM, { RA, RS, RB } }, 4787 - 4788 - { "dcbte", X(31,286), X_MASK, BOOKE64, { CT, RA, RB } }, 4789 - 4790 - { "lhzxe", X(31,287), X_MASK, BOOKE64, { RT, RA0, RB } }, 4791 - 4792 - { "tlbie", X(31,306), XRTLRA_MASK, PPC, { RB, L } }, 4793 - { "tlbi", X(31,306), XRT_MASK, POWER, { RA0, RB } }, 4794 - 4795 - { "eciwx", X(31,310), X_MASK, PPC, { RT, RA, RB } }, 4796 - 4797 - { "lhzux", X(31,311), X_MASK, COM, { RT, RAL, RB } }, 4798 - 4799 - { "xor", XRC(31,316,0), X_MASK, COM, { RA, RS, RB } }, 4800 - { "xor.", XRC(31,316,1), X_MASK, COM, { RA, RS, RB } }, 4801 - 4802 - { "lhzuxe", X(31,319), X_MASK, BOOKE64, { RT, RAL, RB } }, 4803 - 4804 - { "mfexisr", XSPR(31,323,64), XSPR_MASK, PPC403, { RT } }, 4805 - { "mfexier", XSPR(31,323,66), XSPR_MASK, PPC403, { RT } }, 4806 - { "mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403, { RT } }, 4807 - { "mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403, { RT } }, 4808 - { "mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403, { RT } }, 4809 - { "mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403, { RT } }, 4810 - { "mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403, { RT } }, 4811 - { "mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403, { RT } }, 4812 - { "mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403, { RT } }, 4813 - { "mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403, { RT } }, 4814 - { "mfbear", XSPR(31,323,144), XSPR_MASK, PPC403, { RT } }, 4815 - { "mfbesr", XSPR(31,323,145), XSPR_MASK, PPC403, { RT } }, 4816 - { "mfiocr", XSPR(31,323,160), XSPR_MASK, PPC403, { RT } }, 4817 - { "mfdmacr0", XSPR(31,323,192), XSPR_MASK, PPC403, { RT } }, 4818 - { "mfdmact0", XSPR(31,323,193), XSPR_MASK, PPC403, { RT } }, 4819 - { "mfdmada0", XSPR(31,323,194), XSPR_MASK, PPC403, { RT } }, 4820 - { "mfdmasa0", XSPR(31,323,195), XSPR_MASK, PPC403, { RT } }, 4821 - { "mfdmacc0", XSPR(31,323,196), XSPR_MASK, PPC403, { RT } }, 4822 - { "mfdmacr1", XSPR(31,323,200), XSPR_MASK, PPC403, { RT } }, 4823 - { "mfdmact1", XSPR(31,323,201), XSPR_MASK, PPC403, { RT } }, 4824 - { "mfdmada1", XSPR(31,323,202), XSPR_MASK, PPC403, { RT } }, 4825 - { "mfdmasa1", XSPR(31,323,203), XSPR_MASK, PPC403, { RT } }, 4826 - { "mfdmacc1", XSPR(31,323,204), XSPR_MASK, PPC403, { RT } }, 4827 - { "mfdmacr2", XSPR(31,323,208), XSPR_MASK, PPC403, { RT } }, 4828 - { "mfdmact2", XSPR(31,323,209), XSPR_MASK, PPC403, { RT } }, 4829 - { "mfdmada2", XSPR(31,323,210), XSPR_MASK, PPC403, { RT } }, 4830 - { "mfdmasa2", XSPR(31,323,211), XSPR_MASK, PPC403, { RT } }, 4831 - { "mfdmacc2", XSPR(31,323,212), XSPR_MASK, PPC403, { RT } }, 4832 - { "mfdmacr3", XSPR(31,323,216), XSPR_MASK, PPC403, { RT } }, 4833 - { "mfdmact3", XSPR(31,323,217), XSPR_MASK, PPC403, { RT } }, 4834 - { "mfdmada3", XSPR(31,323,218), XSPR_MASK, PPC403, { RT } }, 4835 - { "mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, { RT } }, 4836 - { "mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, { RT } }, 4837 - { "mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, { RT } }, 4838 - { "mfdcr", X(31,323), X_MASK, PPC403 | BOOKE, { RT, SPR } }, 4839 - 4840 - { "div", XO(31,331,0,0), XO_MASK, M601, { RT, RA, RB } }, 4841 - { "div.", XO(31,331,0,1), XO_MASK, M601, { RT, RA, RB } }, 4842 - { "divo", XO(31,331,1,0), XO_MASK, M601, { RT, RA, RB } }, 4843 - { "divo.", XO(31,331,1,1), XO_MASK, M601, { RT, RA, RB } }, 4844 - 4845 - { "mfpmr", X(31,334), X_MASK, PPCPMR, { RT, PMR }}, 4846 - 4847 - { "mfmq", XSPR(31,339,0), XSPR_MASK, M601, { RT } }, 4848 - { "mfxer", XSPR(31,339,1), XSPR_MASK, COM, { RT } }, 4849 - { "mfrtcu", XSPR(31,339,4), XSPR_MASK, COM, { RT } }, 4850 - { "mfrtcl", XSPR(31,339,5), XSPR_MASK, COM, { RT } }, 4851 - { "mfdec", XSPR(31,339,6), XSPR_MASK, MFDEC1, { RT } }, 4852 - { "mfdec", XSPR(31,339,22), XSPR_MASK, MFDEC2, { RT } }, 4853 - { "mflr", XSPR(31,339,8), XSPR_MASK, COM, { RT } }, 4854 - { "mfctr", XSPR(31,339,9), XSPR_MASK, COM, { RT } }, 4855 - { "mftid", XSPR(31,339,17), XSPR_MASK, POWER, { RT } }, 4856 - { "mfdsisr", XSPR(31,339,18), XSPR_MASK, COM, { RT } }, 4857 - { "mfdar", XSPR(31,339,19), XSPR_MASK, COM, { RT } }, 4858 - { "mfsdr0", XSPR(31,339,24), XSPR_MASK, POWER, { RT } }, 4859 - { "mfsdr1", XSPR(31,339,25), XSPR_MASK, COM, { RT } }, 4860 - { "mfsrr0", XSPR(31,339,26), XSPR_MASK, COM, { RT } }, 4861 - { "mfsrr1", XSPR(31,339,27), XSPR_MASK, COM, { RT } }, 4862 - { "mfcfar", XSPR(31,339,28), XSPR_MASK, POWER6, { RT } }, 4863 - { "mfpid", XSPR(31,339,48), XSPR_MASK, BOOKE, { RT } }, 4864 - { "mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, { RT } }, 4865 - { "mfcsrr0", XSPR(31,339,58), XSPR_MASK, BOOKE, { RT } }, 4866 - { "mfcsrr1", XSPR(31,339,59), XSPR_MASK, BOOKE, { RT } }, 4867 - { "mfdear", XSPR(31,339,61), XSPR_MASK, BOOKE, { RT } }, 4868 - { "mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, { RT } }, 4869 - { "mfesr", XSPR(31,339,62), XSPR_MASK, BOOKE, { RT } }, 4870 - { "mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, { RT } }, 4871 - { "mfivpr", XSPR(31,339,63), XSPR_MASK, BOOKE, { RT } }, 4872 - { "mfcmpa", XSPR(31,339,144), XSPR_MASK, PPC860, { RT } }, 4873 - { "mfcmpb", XSPR(31,339,145), XSPR_MASK, PPC860, { RT } }, 4874 - { "mfcmpc", XSPR(31,339,146), XSPR_MASK, PPC860, { RT } }, 4875 - { "mfcmpd", XSPR(31,339,147), XSPR_MASK, PPC860, { RT } }, 4876 - { "mficr", XSPR(31,339,148), XSPR_MASK, PPC860, { RT } }, 4877 - { "mfder", XSPR(31,339,149), XSPR_MASK, PPC860, { RT } }, 4878 - { "mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, { RT } }, 4879 - { "mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, { RT } }, 4880 - { "mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, { RT } }, 4881 - { "mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, { RT } }, 4882 - { "mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, { RT } }, 4883 - { "mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, { RT } }, 4884 - { "mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, { RT } }, 4885 - { "mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, { RT } }, 4886 - { "mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, { RT } }, 4887 - { "mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, { RT } }, 4888 - { "mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, { RT } }, 4889 - { "mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, { RT } }, 4890 - { "mftb", X(31,371), X_MASK, CLASSIC, { RT, TBR } }, 4891 - { "mftb", XSPR(31,339,268), XSPR_MASK, BOOKE, { RT } }, 4892 - { "mftbl", XSPR(31,371,268), XSPR_MASK, CLASSIC, { RT } }, 4893 - { "mftbl", XSPR(31,339,268), XSPR_MASK, BOOKE, { RT } }, 4894 - { "mftbu", XSPR(31,371,269), XSPR_MASK, CLASSIC, { RT } }, 4895 - { "mftbu", XSPR(31,339,269), XSPR_MASK, BOOKE, { RT } }, 4896 - { "mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, { RT, SPRG } }, 4897 - { "mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, { RT } }, 4898 - { "mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, { RT } }, 4899 - { "mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, { RT } }, 4900 - { "mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, { RT } }, 4901 - { "mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405 | BOOKE, { RT } }, 4902 - { "mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405 | BOOKE, { RT } }, 4903 - { "mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405 | BOOKE, { RT } }, 4904 - { "mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405 | BOOKE, { RT } }, 4905 - { "mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, { RT } }, 4906 - { "mfear", XSPR(31,339,282), XSPR_MASK, PPC, { RT } }, 4907 - { "mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, { RT } }, 4908 - { "mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, { RT } }, 4909 - { "mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, { RT } }, 4910 - { "mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, { RT } }, 4911 - { "mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, { RT } }, 4912 - { "mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, { RT } }, 4913 - { "mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, { RT } }, 4914 - { "mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, { RT } }, 4915 - { "mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, { RT } }, 4916 - { "mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, { RT } }, 4917 - { "mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, { RT } }, 4918 - { "mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, { RT } }, 4919 - { "mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, { RT } }, 4920 - { "mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, { RT } }, 4921 - { "mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, { RT } }, 4922 - { "mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, { RT } }, 4923 - { "mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, { RT } }, 4924 - { "mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, { RT } }, 4925 - { "mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, { RT } }, 4926 - { "mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, { RT } }, 4927 - { "mfdac2", XSPR(31,339,1015), XSPR_MASK, PPC403, { RT } }, 4928 - { "mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, { RT } }, 4929 - { "mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, { RT } }, 4930 - { "mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, { RT } }, 4931 - { "mfdvc2", XSPR(31,339,951), XSPR_MASK, PPC405, { RT } }, 4932 - { "mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, { RT } }, 4933 - { "mftsr", XSPR(31,339,984), XSPR_MASK, PPC403, { RT } }, 4934 - { "mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, { RT } }, 4935 - { "mftcr", XSPR(31,339,986), XSPR_MASK, PPC403, { RT } }, 4936 - { "mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, { RT } }, 4937 - { "mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, { RT } }, 4938 - { "mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, { RT } }, 4939 - { "mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, { RT } }, 4940 - { "mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, { RT } }, 4941 - { "mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, { RT } }, 4942 - { "mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, { RT } }, 4943 - { "mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, { RT } }, 4944 - { "mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, { RT } }, 4945 - { "mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, { RT } }, 4946 - { "mfivor10", XSPR(31,339,410), XSPR_MASK, BOOKE, { RT } }, 4947 - { "mfivor11", XSPR(31,339,411), XSPR_MASK, BOOKE, { RT } }, 4948 - { "mfivor12", XSPR(31,339,412), XSPR_MASK, BOOKE, { RT } }, 4949 - { "mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, { RT } }, 4950 - { "mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, { RT } }, 4951 - { "mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, { RT } }, 4952 - { "mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, { RT } }, 4953 - { "mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, { RT } }, 4954 - { "mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, { RT } }, 4955 - { "mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE, { RT } }, 4956 - { "mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE, { RT } }, 4957 - { "mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, { RT } }, 4958 - { "mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, { RT } }, 4959 - { "mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, { RT, SPRBAT } }, 4960 - { "mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, { RT, SPRBAT } }, 4961 - { "mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, { RT, SPRBAT } }, 4962 - { "mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, { RT, SPRBAT } }, 4963 - { "mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, { RT } }, 4964 - { "mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, { RT } }, 4965 - { "mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, { RT } }, 4966 - { "mfdc_cst", XSPR(31,339,568), XSPR_MASK, PPC860, { RT } }, 4967 - { "mfdc_adr", XSPR(31,339,569), XSPR_MASK, PPC860, { RT } }, 4968 - { "mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, { RT } }, 4969 - { "mfdc_dat", XSPR(31,339,570), XSPR_MASK, PPC860, { RT } }, 4970 - { "mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, { RT } }, 4971 - { "mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, { RT } }, 4972 - { "mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, { RT } }, 4973 - { "mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, { RT } }, 4974 - { "mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, { RT } }, 4975 - { "mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, { RT } }, 4976 - { "mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, { RT } }, 4977 - { "mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, { RT } }, 4978 - { "mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, { RT } }, 4979 - { "mfmi_twc", XSPR(31,339,789), XSPR_MASK, PPC860, { RT } }, 4980 - { "mfmi_rpn", XSPR(31,339,790), XSPR_MASK, PPC860, { RT } }, 4981 - { "mfmd_ctr", XSPR(31,339,792), XSPR_MASK, PPC860, { RT } }, 4982 - { "mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860, { RT } }, 4983 - { "mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860, { RT } }, 4984 - { "mfmd_epn", XSPR(31,339,795), XSPR_MASK, PPC860, { RT } }, 4985 - { "mfmd_twb", XSPR(31,339,796), XSPR_MASK, PPC860, { RT } }, 4986 - { "mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, { RT } }, 4987 - { "mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, { RT } }, 4988 - { "mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, { RT } }, 4989 - { "mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, { RT } }, 4990 - { "mfmi_dbram0",XSPR(31,339,817), XSPR_MASK, PPC860, { RT } }, 4991 - { "mfmi_dbram1",XSPR(31,339,818), XSPR_MASK, PPC860, { RT } }, 4992 - { "mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, { RT } }, 4993 - { "mfmd_dbram0",XSPR(31,339,825), XSPR_MASK, PPC860, { RT } }, 4994 - { "mfmd_dbram1",XSPR(31,339,826), XSPR_MASK, PPC860, { RT } }, 4995 - { "mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, { RT } }, 4996 - { "mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, { RT } }, 4997 - { "mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, { RT } }, 4998 - { "mfusia", XSPR(31,339,939), XSPR_MASK, PPC750, { RT } }, 4999 - { "mfummcr1", XSPR(31,339,940), XSPR_MASK, PPC750, { RT } }, 5000 - { "mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750, { RT } }, 5001 - { "mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, { RT } }, 5002 - { "mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, { RT } }, 5003 - { "mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405, { RT } }, 5004 - { "mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750, { RT } }, 5005 - { "mfpmc1", XSPR(31,339,953), XSPR_MASK, PPC750, { RT } }, 5006 - { "mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403, { RT } }, 5007 - { "mfpmc2", XSPR(31,339,954), XSPR_MASK, PPC750, { RT } }, 5008 - { "mfdcwr", XSPR(31,339,954), XSPR_MASK, PPC403, { RT } }, 5009 - { "mfsia", XSPR(31,339,955), XSPR_MASK, PPC750, { RT } }, 5010 - { "mfsler", XSPR(31,339,955), XSPR_MASK, PPC405, { RT } }, 5011 - { "mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750, { RT } }, 5012 - { "mfsu0r", XSPR(31,339,956), XSPR_MASK, PPC405, { RT } }, 5013 - { "mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, { RT } }, 5014 - { "mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, { RT } }, 5015 - { "mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403, { RT } }, 5016 - { "mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, { RT } }, 5017 - { "mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403, { RT } }, 5018 - { "mfpit", XSPR(31,339,987), XSPR_MASK, PPC403, { RT } }, 5019 - { "mftbhi", XSPR(31,339,988), XSPR_MASK, PPC403, { RT } }, 5020 - { "mftblo", XSPR(31,339,989), XSPR_MASK, PPC403, { RT } }, 5021 - { "mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, { RT } }, 5022 - { "mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, { RT } }, 5023 - { "mfl2cr", XSPR(31,339,1017), XSPR_MASK, PPC750, { RT } }, 5024 - { "mfdccr", XSPR(31,339,1018), XSPR_MASK, PPC403, { RT } }, 5025 - { "mficcr", XSPR(31,339,1019), XSPR_MASK, PPC403, { RT } }, 5026 - { "mfictc", XSPR(31,339,1019), XSPR_MASK, PPC750, { RT } }, 5027 - { "mfpbl1", XSPR(31,339,1020), XSPR_MASK, PPC403, { RT } }, 5028 - { "mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, { RT } }, 5029 - { "mfpbu1", XSPR(31,339,1021), XSPR_MASK, PPC403, { RT } }, 5030 - { "mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, { RT } }, 5031 - { "mfpbl2", XSPR(31,339,1022), XSPR_MASK, PPC403, { RT } }, 5032 - { "mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, { RT } }, 5033 - { "mfpbu2", XSPR(31,339,1023), XSPR_MASK, PPC403, { RT } }, 5034 - { "mfspr", X(31,339), X_MASK, COM, { RT, SPR } }, 5035 - 5036 - { "lwax", X(31,341), X_MASK, PPC64, { RT, RA0, RB } }, 5037 - 5038 - { "dst", XDSS(31,342,0), XDSS_MASK, PPCVEC, { RA, RB, STRM } }, 5039 - { "dstt", XDSS(31,342,1), XDSS_MASK, PPCVEC, { RA, RB, STRM } }, 5040 - 5041 - { "lhax", X(31,343), X_MASK, COM, { RT, RA0, RB } }, 5042 - 5043 - { "lhaxe", X(31,351), X_MASK, BOOKE64, { RT, RA0, RB } }, 5044 - 5045 - { "dstst", XDSS(31,374,0), XDSS_MASK, PPCVEC, { RA, RB, STRM } }, 5046 - { "dststt", XDSS(31,374,1), XDSS_MASK, PPCVEC, { RA, RB, STRM } }, 5047 - 5048 - { "dccci", X(31,454), XRT_MASK, PPC403|PPC440, { RA, RB } }, 5049 - 5050 - { "abs", XO(31,360,0,0), XORB_MASK, M601, { RT, RA } }, 5051 - { "abs.", XO(31,360,0,1), XORB_MASK, M601, { RT, RA } }, 5052 - { "abso", XO(31,360,1,0), XORB_MASK, M601, { RT, RA } }, 5053 - { "abso.", XO(31,360,1,1), XORB_MASK, M601, { RT, RA } }, 5054 - 5055 - { "divs", XO(31,363,0,0), XO_MASK, M601, { RT, RA, RB } }, 5056 - { "divs.", XO(31,363,0,1), XO_MASK, M601, { RT, RA, RB } }, 5057 - { "divso", XO(31,363,1,0), XO_MASK, M601, { RT, RA, RB } }, 5058 - { "divso.", XO(31,363,1,1), XO_MASK, M601, { RT, RA, RB } }, 5059 - 5060 - { "tlbia", X(31,370), 0xffffffff, PPC, { 0 } }, 5061 - 5062 - { "lwaux", X(31,373), X_MASK, PPC64, { RT, RAL, RB } }, 5063 - 5064 - { "lhaux", X(31,375), X_MASK, COM, { RT, RAL, RB } }, 5065 - 5066 - { "lhauxe", X(31,383), X_MASK, BOOKE64, { RT, RAL, RB } }, 5067 - 5068 - { "mtdcrx", X(31,387), X_MASK, BOOKE, { RA, RS } }, 5069 - 5070 - { "dcblc", X(31,390), X_MASK, PPCCHLK, { CT, RA, RB }}, 5071 - 5072 - { "subfe64", XO(31,392,0,0), XO_MASK, BOOKE64, { RT, RA, RB } }, 5073 - { "subfe64o",XO(31,392,1,0), XO_MASK, BOOKE64, { RT, RA, RB } }, 5074 - 5075 - { "adde64", XO(31,394,0,0), XO_MASK, BOOKE64, { RT, RA, RB } }, 5076 - { "adde64o", XO(31,394,1,0), XO_MASK, BOOKE64, { RT, RA, RB } }, 5077 - 5078 - { "dcblce", X(31,398), X_MASK, PPCCHLK64, { CT, RA, RB }}, 5079 - 5080 - { "slbmte", X(31,402), XRA_MASK, PPC64, { RS, RB } }, 5081 - 5082 - { "sthx", X(31,407), X_MASK, COM, { RS, RA0, RB } }, 5083 - 5084 - { "cmpb", X(31,508), X_MASK, POWER6, { RA, RS, RB } }, 5085 - 5086 - { "lfqx", X(31,791), X_MASK, POWER2, { FRT, RA, RB } }, 5087 - 5088 - { "lfdpx", X(31,791), X_MASK, POWER6, { FRT, RA, RB } }, 5089 - 5090 - { "lfqux", X(31,823), X_MASK, POWER2, { FRT, RA, RB } }, 5091 - 5092 - { "stfqx", X(31,919), X_MASK, POWER2, { FRS, RA, RB } }, 5093 - 5094 - { "stfdpx", X(31,919), X_MASK, POWER6, { FRS, RA, RB } }, 5095 - 5096 - { "stfqux", X(31,951), X_MASK, POWER2, { FRS, RA, RB } }, 5097 - 5098 - { "orc", XRC(31,412,0), X_MASK, COM, { RA, RS, RB } }, 5099 - { "orc.", XRC(31,412,1), X_MASK, COM, { RA, RS, RB } }, 5100 - 5101 - { "sradi", XS(31,413,0), XS_MASK, PPC64, { RA, RS, SH6 } }, 5102 - { "sradi.", XS(31,413,1), XS_MASK, PPC64, { RA, RS, SH6 } }, 5103 - 5104 - { "sthxe", X(31,415), X_MASK, BOOKE64, { RS, RA0, RB } }, 5105 - 5106 - { "slbie", X(31,434), XRTRA_MASK, PPC64, { RB } }, 5107 - 5108 - { "ecowx", X(31,438), X_MASK, PPC, { RT, RA, RB } }, 5109 - 5110 - { "sthux", X(31,439), X_MASK, COM, { RS, RAS, RB } }, 5111 - 5112 - { "sthuxe", X(31,447), X_MASK, BOOKE64, { RS, RAS, RB } }, 5113 - 5114 - { "mr", XRC(31,444,0), X_MASK, COM, { RA, RS, RBS } }, 5115 - { "or", XRC(31,444,0), X_MASK, COM, { RA, RS, RB } }, 5116 - { "mr.", XRC(31,444,1), X_MASK, COM, { RA, RS, RBS } }, 5117 - { "or.", XRC(31,444,1), X_MASK, COM, { RA, RS, RB } }, 5118 - 5119 - { "mtexisr", XSPR(31,451,64), XSPR_MASK, PPC403, { RS } }, 5120 - { "mtexier", XSPR(31,451,66), XSPR_MASK, PPC403, { RS } }, 5121 - { "mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403, { RS } }, 5122 - { "mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403, { RS } }, 5123 - { "mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403, { RS } }, 5124 - { "mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403, { RS } }, 5125 - { "mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403, { RS } }, 5126 - { "mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403, { RS } }, 5127 - { "mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403, { RS } }, 5128 - { "mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403, { RS } }, 5129 - { "mtbear", XSPR(31,451,144), XSPR_MASK, PPC403, { RS } }, 5130 - { "mtbesr", XSPR(31,451,145), XSPR_MASK, PPC403, { RS } }, 5131 - { "mtiocr", XSPR(31,451,160), XSPR_MASK, PPC403, { RS } }, 5132 - { "mtdmacr0", XSPR(31,451,192), XSPR_MASK, PPC403, { RS } }, 5133 - { "mtdmact0", XSPR(31,451,193), XSPR_MASK, PPC403, { RS } }, 5134 - { "mtdmada0", XSPR(31,451,194), XSPR_MASK, PPC403, { RS } }, 5135 - { "mtdmasa0", XSPR(31,451,195), XSPR_MASK, PPC403, { RS } }, 5136 - { "mtdmacc0", XSPR(31,451,196), XSPR_MASK, PPC403, { RS } }, 5137 - { "mtdmacr1", XSPR(31,451,200), XSPR_MASK, PPC403, { RS } }, 5138 - { "mtdmact1", XSPR(31,451,201), XSPR_MASK, PPC403, { RS } }, 5139 - { "mtdmada1", XSPR(31,451,202), XSPR_MASK, PPC403, { RS } }, 5140 - { "mtdmasa1", XSPR(31,451,203), XSPR_MASK, PPC403, { RS } }, 5141 - { "mtdmacc1", XSPR(31,451,204), XSPR_MASK, PPC403, { RS } }, 5142 - { "mtdmacr2", XSPR(31,451,208), XSPR_MASK, PPC403, { RS } }, 5143 - { "mtdmact2", XSPR(31,451,209), XSPR_MASK, PPC403, { RS } }, 5144 - { "mtdmada2", XSPR(31,451,210), XSPR_MASK, PPC403, { RS } }, 5145 - { "mtdmasa2", XSPR(31,451,211), XSPR_MASK, PPC403, { RS } }, 5146 - { "mtdmacc2", XSPR(31,451,212), XSPR_MASK, PPC403, { RS } }, 5147 - { "mtdmacr3", XSPR(31,451,216), XSPR_MASK, PPC403, { RS } }, 5148 - { "mtdmact3", XSPR(31,451,217), XSPR_MASK, PPC403, { RS } }, 5149 - { "mtdmada3", XSPR(31,451,218), XSPR_MASK, PPC403, { RS } }, 5150 - { "mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, { RS } }, 5151 - { "mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, { RS } }, 5152 - { "mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, { RS } }, 5153 - { "mtdcr", X(31,451), X_MASK, PPC403 | BOOKE, { SPR, RS } }, 5154 - 5155 - { "subfze64",XO(31,456,0,0), XORB_MASK, BOOKE64, { RT, RA } }, 5156 - { "subfze64o",XO(31,456,1,0), XORB_MASK, BOOKE64, { RT, RA } }, 5157 - 5158 - { "divdu", XO(31,457,0,0), XO_MASK, PPC64, { RT, RA, RB } }, 5159 - { "divdu.", XO(31,457,0,1), XO_MASK, PPC64, { RT, RA, RB } }, 5160 - { "divduo", XO(31,457,1,0), XO_MASK, PPC64, { RT, RA, RB } }, 5161 - { "divduo.", XO(31,457,1,1), XO_MASK, PPC64, { RT, RA, RB } }, 5162 - 5163 - { "addze64", XO(31,458,0,0), XORB_MASK, BOOKE64, { RT, RA } }, 5164 - { "addze64o",XO(31,458,1,0), XORB_MASK, BOOKE64, { RT, RA } }, 5165 - 5166 - { "divwu", XO(31,459,0,0), XO_MASK, PPC, { RT, RA, RB } }, 5167 - { "divwu.", XO(31,459,0,1), XO_MASK, PPC, { RT, RA, RB } }, 5168 - { "divwuo", XO(31,459,1,0), XO_MASK, PPC, { RT, RA, RB } }, 5169 - { "divwuo.", XO(31,459,1,1), XO_MASK, PPC, { RT, RA, RB } }, 5170 - 5171 - { "mtmq", XSPR(31,467,0), XSPR_MASK, M601, { RS } }, 5172 - { "mtxer", XSPR(31,467,1), XSPR_MASK, COM, { RS } }, 5173 - { "mtlr", XSPR(31,467,8), XSPR_MASK, COM, { RS } }, 5174 - { "mtctr", XSPR(31,467,9), XSPR_MASK, COM, { RS } }, 5175 - { "mttid", XSPR(31,467,17), XSPR_MASK, POWER, { RS } }, 5176 - { "mtdsisr", XSPR(31,467,18), XSPR_MASK, COM, { RS } }, 5177 - { "mtdar", XSPR(31,467,19), XSPR_MASK, COM, { RS } }, 5178 - { "mtrtcu", XSPR(31,467,20), XSPR_MASK, COM, { RS } }, 5179 - { "mtrtcl", XSPR(31,467,21), XSPR_MASK, COM, { RS } }, 5180 - { "mtdec", XSPR(31,467,22), XSPR_MASK, COM, { RS } }, 5181 - { "mtsdr0", XSPR(31,467,24), XSPR_MASK, POWER, { RS } }, 5182 - { "mtsdr1", XSPR(31,467,25), XSPR_MASK, COM, { RS } }, 5183 - { "mtsrr0", XSPR(31,467,26), XSPR_MASK, COM, { RS } }, 5184 - { "mtsrr1", XSPR(31,467,27), XSPR_MASK, COM, { RS } }, 5185 - { "mtcfar", XSPR(31,467,28), XSPR_MASK, POWER6, { RS } }, 5186 - { "mtpid", XSPR(31,467,48), XSPR_MASK, BOOKE, { RS } }, 5187 - { "mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, { RS } }, 5188 - { "mtdecar", XSPR(31,467,54), XSPR_MASK, BOOKE, { RS } }, 5189 - { "mtcsrr0", XSPR(31,467,58), XSPR_MASK, BOOKE, { RS } }, 5190 - { "mtcsrr1", XSPR(31,467,59), XSPR_MASK, BOOKE, { RS } }, 5191 - { "mtdear", XSPR(31,467,61), XSPR_MASK, BOOKE, { RS } }, 5192 - { "mtdear", XSPR(31,467,981), XSPR_MASK, PPC403, { RS } }, 5193 - { "mtesr", XSPR(31,467,62), XSPR_MASK, BOOKE, { RS } }, 5194 - { "mtesr", XSPR(31,467,980), XSPR_MASK, PPC403, { RS } }, 5195 - { "mtivpr", XSPR(31,467,63), XSPR_MASK, BOOKE, { RS } }, 5196 - { "mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, { RS } }, 5197 - { "mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, { RS } }, 5198 - { "mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, { RS } }, 5199 - { "mtcmpd", XSPR(31,467,147), XSPR_MASK, PPC860, { RS } }, 5200 - { "mticr", XSPR(31,467,148), XSPR_MASK, PPC860, { RS } }, 5201 - { "mtder", XSPR(31,467,149), XSPR_MASK, PPC860, { RS } }, 5202 - { "mtcounta", XSPR(31,467,150), XSPR_MASK, PPC860, { RS } }, 5203 - { "mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, { RS } }, 5204 - { "mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, { RS } }, 5205 - { "mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, { RS } }, 5206 - { "mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, { RS } }, 5207 - { "mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, { RS } }, 5208 - { "mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, { RS } }, 5209 - { "mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, { RS } }, 5210 - { "mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, { RS } }, 5211 - { "mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, { RS } }, 5212 - { "mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, { RS } }, 5213 - { "mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, { RS } }, 5214 - { "mtsprg", XSPR(31,467,256), XSPRG_MASK,PPC, { SPRG, RS } }, 5215 - { "mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, { RS } }, 5216 - { "mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, { RS } }, 5217 - { "mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, { RS } }, 5218 - { "mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, { RS } }, 5219 - { "mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405 | BOOKE, { RS } }, 5220 - { "mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405 | BOOKE, { RS } }, 5221 - { "mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405 | BOOKE, { RS } }, 5222 - { "mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405 | BOOKE, { RS } }, 5223 - { "mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, { RS } }, 5224 - { "mtear", XSPR(31,467,282), XSPR_MASK, PPC, { RS } }, 5225 - { "mttbl", XSPR(31,467,284), XSPR_MASK, PPC, { RS } }, 5226 - { "mttbu", XSPR(31,467,285), XSPR_MASK, PPC, { RS } }, 5227 - { "mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, { RS } }, 5228 - { "mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, { RS } }, 5229 - { "mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, { RS } }, 5230 - { "mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, { RS } }, 5231 - { "mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, { RS } }, 5232 - { "mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405, { RS } }, 5233 - { "mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, { RS } }, 5234 - { "mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, { RS } }, 5235 - { "mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, { RS } }, 5236 - { "mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, { RS } }, 5237 - { "mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, { RS } }, 5238 - { "mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, { RS } }, 5239 - { "mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, { RS } }, 5240 - { "mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, { RS } }, 5241 - { "mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, { RS } }, 5242 - { "mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, { RS } }, 5243 - { "mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, { RS } }, 5244 - { "mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, { RS } }, 5245 - { "mtdac2", XSPR(31,467,1015), XSPR_MASK, PPC403, { RS } }, 5246 - { "mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, { RS } }, 5247 - { "mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, { RS } }, 5248 - { "mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, { RS } }, 5249 - { "mtdvc2", XSPR(31,467,951), XSPR_MASK, PPC405, { RS } }, 5250 - { "mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, { RS } }, 5251 - { "mttsr", XSPR(31,467,984), XSPR_MASK, PPC403, { RS } }, 5252 - { "mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, { RS } }, 5253 - { "mttcr", XSPR(31,467,986), XSPR_MASK, PPC403, { RS } }, 5254 - { "mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, { RS } }, 5255 - { "mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, { RS } }, 5256 - { "mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, { RS } }, 5257 - { "mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, { RS } }, 5258 - { "mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, { RS } }, 5259 - { "mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, { RS } }, 5260 - { "mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, { RS } }, 5261 - { "mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, { RS } }, 5262 - { "mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, { RS } }, 5263 - { "mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, { RS } }, 5264 - { "mtivor10", XSPR(31,467,410), XSPR_MASK, BOOKE, { RS } }, 5265 - { "mtivor11", XSPR(31,467,411), XSPR_MASK, BOOKE, { RS } }, 5266 - { "mtivor12", XSPR(31,467,412), XSPR_MASK, BOOKE, { RS } }, 5267 - { "mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, { RS } }, 5268 - { "mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, { RS } }, 5269 - { "mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, { RS } }, 5270 - { "mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, { RS } }, 5271 - { "mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, { RS } }, 5272 - { "mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, { RS } }, 5273 - { "mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE, { RS } }, 5274 - { "mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE, { RS } }, 5275 - { "mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, { RS } }, 5276 - { "mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, { RS } }, 5277 - { "mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, { SPRBAT, RS } }, 5278 - { "mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, { SPRBAT, RS } }, 5279 - { "mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, { SPRBAT, RS } }, 5280 - { "mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, { SPRBAT, RS } }, 5281 - { "mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, { RS } }, 5282 - { "mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, { RS } }, 5283 - { "mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, { RS } }, 5284 - { "mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, { RS } }, 5285 - { "mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, { RS } }, 5286 - { "mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, { RS } }, 5287 - { "mtusia", XSPR(31,467,939), XSPR_MASK, PPC750, { RS } }, 5288 - { "mtummcr1", XSPR(31,467,940), XSPR_MASK, PPC750, { RS } }, 5289 - { "mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750, { RS } }, 5290 - { "mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, { RS } }, 5291 - { "mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, { RS } }, 5292 - { "mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405, { RS } }, 5293 - { "mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750, { RS } }, 5294 - { "mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403, { RS } }, 5295 - { "mtpmc1", XSPR(31,467,953), XSPR_MASK, PPC750, { RS } }, 5296 - { "mtdcwr", XSPR(31,467,954), XSPR_MASK, PPC403, { RS } }, 5297 - { "mtpmc2", XSPR(31,467,954), XSPR_MASK, PPC750, { RS } }, 5298 - { "mtsler", XSPR(31,467,955), XSPR_MASK, PPC405, { RS } }, 5299 - { "mtsia", XSPR(31,467,955), XSPR_MASK, PPC750, { RS } }, 5300 - { "mtsu0r", XSPR(31,467,956), XSPR_MASK, PPC405, { RS } }, 5301 - { "mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750, { RS } }, 5302 - { "mtpmc3", XSPR(31,467,957), XSPR_MASK, PPC750, { RS } }, 5303 - { "mtpmc4", XSPR(31,467,958), XSPR_MASK, PPC750, { RS } }, 5304 - { "mticdbdr", XSPR(31,467,979), XSPR_MASK, PPC403, { RS } }, 5305 - { "mtevpr", XSPR(31,467,982), XSPR_MASK, PPC403, { RS } }, 5306 - { "mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403, { RS } }, 5307 - { "mtpit", XSPR(31,467,987), XSPR_MASK, PPC403, { RS } }, 5308 - { "mttbhi", XSPR(31,467,988), XSPR_MASK, PPC403, { RS } }, 5309 - { "mttblo", XSPR(31,467,989), XSPR_MASK, PPC403, { RS } }, 5310 - { "mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, { RS } }, 5311 - { "mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, { RS } }, 5312 - { "mtl2cr", XSPR(31,467,1017), XSPR_MASK, PPC750, { RS } }, 5313 - { "mtdccr", XSPR(31,467,1018), XSPR_MASK, PPC403, { RS } }, 5314 - { "mticcr", XSPR(31,467,1019), XSPR_MASK, PPC403, { RS } }, 5315 - { "mtictc", XSPR(31,467,1019), XSPR_MASK, PPC750, { RS } }, 5316 - { "mtpbl1", XSPR(31,467,1020), XSPR_MASK, PPC403, { RS } }, 5317 - { "mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, { RS } }, 5318 - { "mtpbu1", XSPR(31,467,1021), XSPR_MASK, PPC403, { RS } }, 5319 - { "mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, { RS } }, 5320 - { "mtpbl2", XSPR(31,467,1022), XSPR_MASK, PPC403, { RS } }, 5321 - { "mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, { RS } }, 5322 - { "mtpbu2", XSPR(31,467,1023), XSPR_MASK, PPC403, { RS } }, 5323 - { "mtspr", X(31,467), X_MASK, COM, { SPR, RS } }, 5324 - 5325 - { "dcbi", X(31,470), XRT_MASK, PPC, { RA, RB } }, 5326 - 5327 - { "nand", XRC(31,476,0), X_MASK, COM, { RA, RS, RB } }, 5328 - { "nand.", XRC(31,476,1), X_MASK, COM, { RA, RS, RB } }, 5329 - 5330 - { "dcbie", X(31,478), XRT_MASK, BOOKE64, { RA, RB } }, 5331 - 5332 - { "dcread", X(31,486), X_MASK, PPC403|PPC440, { RT, RA, RB }}, 5333 - 5334 - { "mtpmr", X(31,462), X_MASK, PPCPMR, { PMR, RS }}, 5335 - 5336 - { "icbtls", X(31,486), X_MASK, PPCCHLK, { CT, RA, RB }}, 5337 - 5338 - { "nabs", XO(31,488,0,0), XORB_MASK, M601, { RT, RA } }, 5339 - { "subfme64",XO(31,488,0,0), XORB_MASK, BOOKE64, { RT, RA } }, 5340 - { "nabs.", XO(31,488,0,1), XORB_MASK, M601, { RT, RA } }, 5341 - { "nabso", XO(31,488,1,0), XORB_MASK, M601, { RT, RA } }, 5342 - { "subfme64o",XO(31,488,1,0), XORB_MASK, BOOKE64, { RT, RA } }, 5343 - { "nabso.", XO(31,488,1,1), XORB_MASK, M601, { RT, RA } }, 5344 - 5345 - { "divd", XO(31,489,0,0), XO_MASK, PPC64, { RT, RA, RB } }, 5346 - { "divd.", XO(31,489,0,1), XO_MASK, PPC64, { RT, RA, RB } }, 5347 - { "divdo", XO(31,489,1,0), XO_MASK, PPC64, { RT, RA, RB } }, 5348 - { "divdo.", XO(31,489,1,1), XO_MASK, PPC64, { RT, RA, RB } }, 5349 - 5350 - { "addme64", XO(31,490,0,0), XORB_MASK, BOOKE64, { RT, RA } }, 5351 - { "addme64o",XO(31,490,1,0), XORB_MASK, BOOKE64, { RT, RA } }, 5352 - 5353 - { "divw", XO(31,491,0,0), XO_MASK, PPC, { RT, RA, RB } }, 5354 - { "divw.", XO(31,491,0,1), XO_MASK, PPC, { RT, RA, RB } }, 5355 - { "divwo", XO(31,491,1,0), XO_MASK, PPC, { RT, RA, RB } }, 5356 - { "divwo.", XO(31,491,1,1), XO_MASK, PPC, { RT, RA, RB } }, 5357 - 5358 - { "icbtlse", X(31,494), X_MASK, PPCCHLK64, { CT, RA, RB }}, 5359 - 5360 - { "slbia", X(31,498), 0xffffffff, PPC64, { 0 } }, 5361 - 5362 - { "cli", X(31,502), XRB_MASK, POWER, { RT, RA } }, 5363 - 5364 - { "stdcxe.", XRC(31,511,1), X_MASK, BOOKE64, { RS, RA, RB } }, 5365 - 5366 - { "mcrxr", X(31,512), XRARB_MASK|(3<<21), COM, { BF } }, 5367 - 5368 - { "bblels", X(31,518), X_MASK, PPCBRLK, { 0 }}, 5369 - { "mcrxr64", X(31,544), XRARB_MASK|(3<<21), BOOKE64, { BF } }, 5370 - 5371 - { "clcs", X(31,531), XRB_MASK, M601, { RT, RA } }, 5372 - 5373 - { "ldbrx", X(31,532), X_MASK, CELL, { RT, RA0, RB } }, 5374 - 5375 - { "lswx", X(31,533), X_MASK, PPCCOM, { RT, RA0, RB } }, 5376 - { "lsx", X(31,533), X_MASK, PWRCOM, { RT, RA, RB } }, 5377 - 5378 - { "lwbrx", X(31,534), X_MASK, PPCCOM, { RT, RA0, RB } }, 5379 - { "lbrx", X(31,534), X_MASK, PWRCOM, { RT, RA, RB } }, 5380 - 5381 - { "lfsx", X(31,535), X_MASK, COM, { FRT, RA0, RB } }, 5382 - 5383 - { "srw", XRC(31,536,0), X_MASK, PPCCOM, { RA, RS, RB } }, 5384 - { "sr", XRC(31,536,0), X_MASK, PWRCOM, { RA, RS, RB } }, 5385 - { "srw.", XRC(31,536,1), X_MASK, PPCCOM, { RA, RS, RB } }, 5386 - { "sr.", XRC(31,536,1), X_MASK, PWRCOM, { RA, RS, RB } }, 5387 - 5388 - { "rrib", XRC(31,537,0), X_MASK, M601, { RA, RS, RB } }, 5389 - { "rrib.", XRC(31,537,1), X_MASK, M601, { RA, RS, RB } }, 5390 - 5391 - { "srd", XRC(31,539,0), X_MASK, PPC64, { RA, RS, RB } }, 5392 - { "srd.", XRC(31,539,1), X_MASK, PPC64, { RA, RS, RB } }, 5393 - 5394 - { "maskir", XRC(31,541,0), X_MASK, M601, { RA, RS, RB } }, 5395 - { "maskir.", XRC(31,541,1), X_MASK, M601, { RA, RS, RB } }, 5396 - 5397 - { "lwbrxe", X(31,542), X_MASK, BOOKE64, { RT, RA0, RB } }, 5398 - 5399 - { "lfsxe", X(31,543), X_MASK, BOOKE64, { FRT, RA0, RB } }, 5400 - 5401 - { "bbelr", X(31,550), X_MASK, PPCBRLK, { 0 }}, 5402 - 5403 - { "tlbsync", X(31,566), 0xffffffff, PPC, { 0 } }, 5404 - 5405 - { "lfsux", X(31,567), X_MASK, COM, { FRT, RAS, RB } }, 5406 - 5407 - { "lfsuxe", X(31,575), X_MASK, BOOKE64, { FRT, RAS, RB } }, 5408 - 5409 - { "mfsr", X(31,595), XRB_MASK|(1<<20), COM32, { RT, SR } }, 5410 - 5411 - { "lswi", X(31,597), X_MASK, PPCCOM, { RT, RA0, NB } }, 5412 - { "lsi", X(31,597), X_MASK, PWRCOM, { RT, RA0, NB } }, 5413 - 5414 - { "lwsync", XSYNC(31,598,1), 0xffffffff, PPC, { 0 } }, 5415 - { "ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, { 0 } }, 5416 - { "msync", X(31,598), 0xffffffff, BOOKE, { 0 } }, 5417 - { "sync", X(31,598), XSYNC_MASK, PPCCOM, { LS } }, 5418 - { "dcs", X(31,598), 0xffffffff, PWRCOM, { 0 } }, 5419 - 5420 - { "lfdx", X(31,599), X_MASK, COM, { FRT, RA0, RB } }, 5421 - 5422 - { "lfdxe", X(31,607), X_MASK, BOOKE64, { FRT, RA0, RB } }, 5423 - 5424 - { "mffgpr", XRC(31,607,0), XRA_MASK, POWER6, { FRT, RB } }, 5425 - 5426 - { "mfsri", X(31,627), X_MASK, PWRCOM, { RT, RA, RB } }, 5427 - 5428 - { "dclst", X(31,630), XRB_MASK, PWRCOM, { RS, RA } }, 5429 - 5430 - { "lfdux", X(31,631), X_MASK, COM, { FRT, RAS, RB } }, 5431 - 5432 - { "lfduxe", X(31,639), X_MASK, BOOKE64, { FRT, RAS, RB } }, 5433 - 5434 - { "mfsrin", X(31,659), XRA_MASK, PPC32, { RT, RB } }, 5435 - 5436 - { "stdbrx", X(31,660), X_MASK, CELL, { RS, RA0, RB } }, 5437 - 5438 - { "stswx", X(31,661), X_MASK, PPCCOM, { RS, RA0, RB } }, 5439 - { "stsx", X(31,661), X_MASK, PWRCOM, { RS, RA0, RB } }, 5440 - 5441 - { "stwbrx", X(31,662), X_MASK, PPCCOM, { RS, RA0, RB } }, 5442 - { "stbrx", X(31,662), X_MASK, PWRCOM, { RS, RA0, RB } }, 5443 - 5444 - { "stfsx", X(31,663), X_MASK, COM, { FRS, RA0, RB } }, 5445 - 5446 - { "srq", XRC(31,664,0), X_MASK, M601, { RA, RS, RB } }, 5447 - { "srq.", XRC(31,664,1), X_MASK, M601, { RA, RS, RB } }, 5448 - 5449 - { "sre", XRC(31,665,0), X_MASK, M601, { RA, RS, RB } }, 5450 - { "sre.", XRC(31,665,1), X_MASK, M601, { RA, RS, RB } }, 5451 - 5452 - { "stwbrxe", X(31,670), X_MASK, BOOKE64, { RS, RA0, RB } }, 5453 - 5454 - { "stfsxe", X(31,671), X_MASK, BOOKE64, { FRS, RA0, RB } }, 5455 - 5456 - { "stfsux", X(31,695), X_MASK, COM, { FRS, RAS, RB } }, 5457 - 5458 - { "sriq", XRC(31,696,0), X_MASK, M601, { RA, RS, SH } }, 5459 - { "sriq.", XRC(31,696,1), X_MASK, M601, { RA, RS, SH } }, 5460 - 5461 - { "stfsuxe", X(31,703), X_MASK, BOOKE64, { FRS, RAS, RB } }, 5462 - 5463 - { "stswi", X(31,725), X_MASK, PPCCOM, { RS, RA0, NB } }, 5464 - { "stsi", X(31,725), X_MASK, PWRCOM, { RS, RA0, NB } }, 5465 - 5466 - { "stfdx", X(31,727), X_MASK, COM, { FRS, RA0, RB } }, 5467 - 5468 - { "srlq", XRC(31,728,0), X_MASK, M601, { RA, RS, RB } }, 5469 - { "srlq.", XRC(31,728,1), X_MASK, M601, { RA, RS, RB } }, 5470 - 5471 - { "sreq", XRC(31,729,0), X_MASK, M601, { RA, RS, RB } }, 5472 - { "sreq.", XRC(31,729,1), X_MASK, M601, { RA, RS, RB } }, 5473 - 5474 - { "stfdxe", X(31,735), X_MASK, BOOKE64, { FRS, RA0, RB } }, 5475 - 5476 - { "mftgpr", XRC(31,735,0), XRA_MASK, POWER6, { RT, FRB } }, 5477 - 5478 - { "dcba", X(31,758), XRT_MASK, PPC405 | BOOKE, { RA, RB } }, 5479 - 5480 - { "stfdux", X(31,759), X_MASK, COM, { FRS, RAS, RB } }, 5481 - 5482 - { "srliq", XRC(31,760,0), X_MASK, M601, { RA, RS, SH } }, 5483 - { "srliq.", XRC(31,760,1), X_MASK, M601, { RA, RS, SH } }, 5484 - 5485 - { "dcbae", X(31,766), XRT_MASK, BOOKE64, { RA, RB } }, 5486 - 5487 - { "stfduxe", X(31,767), X_MASK, BOOKE64, { FRS, RAS, RB } }, 5488 - 5489 - { "tlbivax", X(31,786), XRT_MASK, BOOKE, { RA, RB } }, 5490 - { "tlbivaxe",X(31,787), XRT_MASK, BOOKE64, { RA, RB } }, 5491 - 5492 - { "lwzcix", X(31,789), X_MASK, POWER6, { RT, RA0, RB } }, 5493 - 5494 - { "lhbrx", X(31,790), X_MASK, COM, { RT, RA0, RB } }, 5495 - 5496 - { "sraw", XRC(31,792,0), X_MASK, PPCCOM, { RA, RS, RB } }, 5497 - { "sra", XRC(31,792,0), X_MASK, PWRCOM, { RA, RS, RB } }, 5498 - { "sraw.", XRC(31,792,1), X_MASK, PPCCOM, { RA, RS, RB } }, 5499 - { "sra.", XRC(31,792,1), X_MASK, PWRCOM, { RA, RS, RB } }, 5500 - 5501 - { "srad", XRC(31,794,0), X_MASK, PPC64, { RA, RS, RB } }, 5502 - { "srad.", XRC(31,794,1), X_MASK, PPC64, { RA, RS, RB } }, 5503 - 5504 - { "lhbrxe", X(31,798), X_MASK, BOOKE64, { RT, RA0, RB } }, 5505 - 5506 - { "ldxe", X(31,799), X_MASK, BOOKE64, { RT, RA0, RB } }, 5507 - { "lduxe", X(31,831), X_MASK, BOOKE64, { RT, RA0, RB } }, 5508 - 5509 - { "rac", X(31,818), X_MASK, PWRCOM, { RT, RA, RB } }, 5510 - 5511 - { "lhzcix", X(31,821), X_MASK, POWER6, { RT, RA0, RB } }, 5512 - 5513 - { "dss", XDSS(31,822,0), XDSS_MASK, PPCVEC, { STRM } }, 5514 - { "dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, { 0 } }, 5515 - 5516 - { "srawi", XRC(31,824,0), X_MASK, PPCCOM, { RA, RS, SH } }, 5517 - { "srai", XRC(31,824,0), X_MASK, PWRCOM, { RA, RS, SH } }, 5518 - { "srawi.", XRC(31,824,1), X_MASK, PPCCOM, { RA, RS, SH } }, 5519 - { "srai.", XRC(31,824,1), X_MASK, PWRCOM, { RA, RS, SH } }, 5520 - 5521 - { "slbmfev", X(31,851), XRA_MASK, PPC64, { RT, RB } }, 5522 - 5523 - { "lbzcix", X(31,853), X_MASK, POWER6, { RT, RA0, RB } }, 5524 - 5525 - { "mbar", X(31,854), X_MASK, BOOKE, { MO } }, 5526 - { "eieio", X(31,854), 0xffffffff, PPC, { 0 } }, 5527 - 5528 - { "lfiwax", X(31,855), X_MASK, POWER6, { FRT, RA0, RB } }, 5529 - 5530 - { "ldcix", X(31,885), X_MASK, POWER6, { RT, RA0, RB } }, 5531 - 5532 - { "tlbsx", XRC(31,914,0), X_MASK, PPC403|BOOKE, { RTO, RA, RB } }, 5533 - { "tlbsx.", XRC(31,914,1), X_MASK, PPC403|BOOKE, { RTO, RA, RB } }, 5534 - { "tlbsxe", XRC(31,915,0), X_MASK, BOOKE64, { RA, RB } }, 5535 - { "tlbsxe.", XRC(31,915,1), X_MASK, BOOKE64, { RA, RB } }, 5536 - 5537 - { "slbmfee", X(31,915), XRA_MASK, PPC64, { RT, RB } }, 5538 - 5539 - { "stwcix", X(31,917), X_MASK, POWER6, { RS, RA0, RB } }, 5540 - 5541 - { "sthbrx", X(31,918), X_MASK, COM, { RS, RA0, RB } }, 5542 - 5543 - { "sraq", XRC(31,920,0), X_MASK, M601, { RA, RS, RB } }, 5544 - { "sraq.", XRC(31,920,1), X_MASK, M601, { RA, RS, RB } }, 5545 - 5546 - { "srea", XRC(31,921,0), X_MASK, M601, { RA, RS, RB } }, 5547 - { "srea.", XRC(31,921,1), X_MASK, M601, { RA, RS, RB } }, 5548 - 5549 - { "extsh", XRC(31,922,0), XRB_MASK, PPCCOM, { RA, RS } }, 5550 - { "exts", XRC(31,922,0), XRB_MASK, PWRCOM, { RA, RS } }, 5551 - { "extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, { RA, RS } }, 5552 - { "exts.", XRC(31,922,1), XRB_MASK, PWRCOM, { RA, RS } }, 5553 - 5554 - { "sthbrxe", X(31,926), X_MASK, BOOKE64, { RS, RA0, RB } }, 5555 - 5556 - { "stdxe", X(31,927), X_MASK, BOOKE64, { RS, RA0, RB } }, 5557 - 5558 - { "tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, { RT, RA } }, 5559 - { "tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, { RT, RA } }, 5560 - { "tlbre", X(31,946), X_MASK, PPC403|BOOKE, { RSO, RAOPT, SHO } }, 5561 - 5562 - { "sthcix", X(31,949), X_MASK, POWER6, { RS, RA0, RB } }, 5563 - 5564 - { "sraiq", XRC(31,952,0), X_MASK, M601, { RA, RS, SH } }, 5565 - { "sraiq.", XRC(31,952,1), X_MASK, M601, { RA, RS, SH } }, 5566 - 5567 - { "extsb", XRC(31,954,0), XRB_MASK, PPC, { RA, RS} }, 5568 - { "extsb.", XRC(31,954,1), XRB_MASK, PPC, { RA, RS} }, 5569 - 5570 - { "stduxe", X(31,959), X_MASK, BOOKE64, { RS, RAS, RB } }, 5571 - 5572 - { "iccci", X(31,966), XRT_MASK, PPC403|PPC440, { RA, RB } }, 5573 - 5574 - { "tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, { RT, RA } }, 5575 - { "tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, { RT, RA } }, 5576 - { "tlbwe", X(31,978), X_MASK, PPC403|BOOKE, { RSO, RAOPT, SHO } }, 5577 - { "tlbld", X(31,978), XRTRA_MASK, PPC, { RB } }, 5578 - 5579 - { "stbcix", X(31,981), X_MASK, POWER6, { RS, RA0, RB } }, 5580 - 5581 - { "icbi", X(31,982), XRT_MASK, PPC, { RA, RB } }, 5582 - 5583 - { "stfiwx", X(31,983), X_MASK, PPC, { FRS, RA0, RB } }, 5584 - 5585 - { "extsw", XRC(31,986,0), XRB_MASK, PPC64 | BOOKE64,{ RA, RS } }, 5586 - { "extsw.", XRC(31,986,1), XRB_MASK, PPC64, { RA, RS } }, 5587 - 5588 - { "icread", X(31,998), XRT_MASK, PPC403|PPC440, { RA, RB } }, 5589 - 5590 - { "icbie", X(31,990), XRT_MASK, BOOKE64, { RA, RB } }, 5591 - { "stfiwxe", X(31,991), X_MASK, BOOKE64, { FRS, RA0, RB } }, 5592 - 5593 - { "tlbli", X(31,1010), XRTRA_MASK, PPC, { RB } }, 5594 - 5595 - { "stdcix", X(31,1013), X_MASK, POWER6, { RS, RA0, RB } }, 5596 - 5597 - { "dcbzl", XOPL(31,1014,1), XRT_MASK,POWER4, { RA, RB } }, 5598 - { "dcbz", X(31,1014), XRT_MASK, PPC, { RA, RB } }, 5599 - { "dclz", X(31,1014), XRT_MASK, PPC, { RA, RB } }, 5600 - 5601 - { "dcbze", X(31,1022), XRT_MASK, BOOKE64, { RA, RB } }, 5602 - 5603 - { "lvebx", X(31, 7), X_MASK, PPCVEC, { VD, RA, RB } }, 5604 - { "lvehx", X(31, 39), X_MASK, PPCVEC, { VD, RA, RB } }, 5605 - { "lvewx", X(31, 71), X_MASK, PPCVEC, { VD, RA, RB } }, 5606 - { "lvsl", X(31, 6), X_MASK, PPCVEC, { VD, RA, RB } }, 5607 - { "lvsr", X(31, 38), X_MASK, PPCVEC, { VD, RA, RB } }, 5608 - { "lvx", X(31, 103), X_MASK, PPCVEC, { VD, RA, RB } }, 5609 - { "lvxl", X(31, 359), X_MASK, PPCVEC, { VD, RA, RB } }, 5610 - { "stvebx", X(31, 135), X_MASK, PPCVEC, { VS, RA, RB } }, 5611 - { "stvehx", X(31, 167), X_MASK, PPCVEC, { VS, RA, RB } }, 5612 - { "stvewx", X(31, 199), X_MASK, PPCVEC, { VS, RA, RB } }, 5613 - { "stvx", X(31, 231), X_MASK, PPCVEC, { VS, RA, RB } }, 5614 - { "stvxl", X(31, 487), X_MASK, PPCVEC, { VS, RA, RB } }, 5615 - 5616 - /* New load/store left/right index vector instructions that are in the Cell only. */ 5617 - { "lvlx", X(31, 519), X_MASK, CELL, { VD, RA0, RB } }, 5618 - { "lvlxl", X(31, 775), X_MASK, CELL, { VD, RA0, RB } }, 5619 - { "lvrx", X(31, 551), X_MASK, CELL, { VD, RA0, RB } }, 5620 - { "lvrxl", X(31, 807), X_MASK, CELL, { VD, RA0, RB } }, 5621 - { "stvlx", X(31, 647), X_MASK, CELL, { VS, RA0, RB } }, 5622 - { "stvlxl", X(31, 903), X_MASK, CELL, { VS, RA0, RB } }, 5623 - { "stvrx", X(31, 679), X_MASK, CELL, { VS, RA0, RB } }, 5624 - { "stvrxl", X(31, 935), X_MASK, CELL, { VS, RA0, RB } }, 5625 - 5626 - { "lwz", OP(32), OP_MASK, PPCCOM, { RT, D, RA0 } }, 5627 - { "l", OP(32), OP_MASK, PWRCOM, { RT, D, RA0 } }, 5628 - 5629 - { "lwzu", OP(33), OP_MASK, PPCCOM, { RT, D, RAL } }, 5630 - { "lu", OP(33), OP_MASK, PWRCOM, { RT, D, RA0 } }, 5631 - 5632 - { "lbz", OP(34), OP_MASK, COM, { RT, D, RA0 } }, 5633 - 5634 - { "lbzu", OP(35), OP_MASK, COM, { RT, D, RAL } }, 5635 - 5636 - { "stw", OP(36), OP_MASK, PPCCOM, { RS, D, RA0 } }, 5637 - { "st", OP(36), OP_MASK, PWRCOM, { RS, D, RA0 } }, 5638 - 5639 - { "stwu", OP(37), OP_MASK, PPCCOM, { RS, D, RAS } }, 5640 - { "stu", OP(37), OP_MASK, PWRCOM, { RS, D, RA0 } }, 5641 - 5642 - { "stb", OP(38), OP_MASK, COM, { RS, D, RA0 } }, 5643 - 5644 - { "stbu", OP(39), OP_MASK, COM, { RS, D, RAS } }, 5645 - 5646 - { "lhz", OP(40), OP_MASK, COM, { RT, D, RA0 } }, 5647 - 5648 - { "lhzu", OP(41), OP_MASK, COM, { RT, D, RAL } }, 5649 - 5650 - { "lha", OP(42), OP_MASK, COM, { RT, D, RA0 } }, 5651 - 5652 - { "lhau", OP(43), OP_MASK, COM, { RT, D, RAL } }, 5653 - 5654 - { "sth", OP(44), OP_MASK, COM, { RS, D, RA0 } }, 5655 - 5656 - { "sthu", OP(45), OP_MASK, COM, { RS, D, RAS } }, 5657 - 5658 - { "lmw", OP(46), OP_MASK, PPCCOM, { RT, D, RAM } }, 5659 - { "lm", OP(46), OP_MASK, PWRCOM, { RT, D, RA0 } }, 5660 - 5661 - { "stmw", OP(47), OP_MASK, PPCCOM, { RS, D, RA0 } }, 5662 - { "stm", OP(47), OP_MASK, PWRCOM, { RS, D, RA0 } }, 5663 - 5664 - { "lfs", OP(48), OP_MASK, COM, { FRT, D, RA0 } }, 5665 - 5666 - { "lfsu", OP(49), OP_MASK, COM, { FRT, D, RAS } }, 5667 - 5668 - { "lfd", OP(50), OP_MASK, COM, { FRT, D, RA0 } }, 5669 - 5670 - { "lfdu", OP(51), OP_MASK, COM, { FRT, D, RAS } }, 5671 - 5672 - { "stfs", OP(52), OP_MASK, COM, { FRS, D, RA0 } }, 5673 - 5674 - { "stfsu", OP(53), OP_MASK, COM, { FRS, D, RAS } }, 5675 - 5676 - { "stfd", OP(54), OP_MASK, COM, { FRS, D, RA0 } }, 5677 - 5678 - { "stfdu", OP(55), OP_MASK, COM, { FRS, D, RAS } }, 5679 - 5680 - { "lq", OP(56), OP_MASK, POWER4, { RTQ, DQ, RAQ } }, 5681 - 5682 - { "lfq", OP(56), OP_MASK, POWER2, { FRT, D, RA0 } }, 5683 - 5684 - { "lfqu", OP(57), OP_MASK, POWER2, { FRT, D, RA0 } }, 5685 - 5686 - { "lfdp", OP(57), OP_MASK, POWER6, { FRT, D, RA0 } }, 5687 - 5688 - { "lbze", DEO(58,0), DE_MASK, BOOKE64, { RT, DE, RA0 } }, 5689 - { "lbzue", DEO(58,1), DE_MASK, BOOKE64, { RT, DE, RAL } }, 5690 - { "lhze", DEO(58,2), DE_MASK, BOOKE64, { RT, DE, RA0 } }, 5691 - { "lhzue", DEO(58,3), DE_MASK, BOOKE64, { RT, DE, RAL } }, 5692 - { "lhae", DEO(58,4), DE_MASK, BOOKE64, { RT, DE, RA0 } }, 5693 - { "lhaue", DEO(58,5), DE_MASK, BOOKE64, { RT, DE, RAL } }, 5694 - { "lwze", DEO(58,6), DE_MASK, BOOKE64, { RT, DE, RA0 } }, 5695 - { "lwzue", DEO(58,7), DE_MASK, BOOKE64, { RT, DE, RAL } }, 5696 - { "stbe", DEO(58,8), DE_MASK, BOOKE64, { RS, DE, RA0 } }, 5697 - { "stbue", DEO(58,9), DE_MASK, BOOKE64, { RS, DE, RAS } }, 5698 - { "sthe", DEO(58,10), DE_MASK, BOOKE64, { RS, DE, RA0 } }, 5699 - { "sthue", DEO(58,11), DE_MASK, BOOKE64, { RS, DE, RAS } }, 5700 - { "stwe", DEO(58,14), DE_MASK, BOOKE64, { RS, DE, RA0 } }, 5701 - { "stwue", DEO(58,15), DE_MASK, BOOKE64, { RS, DE, RAS } }, 5702 - 5703 - { "ld", DSO(58,0), DS_MASK, PPC64, { RT, DS, RA0 } }, 5704 - 5705 - { "ldu", DSO(58,1), DS_MASK, PPC64, { RT, DS, RAL } }, 5706 - 5707 - { "lwa", DSO(58,2), DS_MASK, PPC64, { RT, DS, RA0 } }, 5708 - 5709 - { "dadd", XRC(59,2,0), X_MASK, POWER6, { FRT, FRA, FRB } }, 5710 - { "dadd.", XRC(59,2,1), X_MASK, POWER6, { FRT, FRA, FRB } }, 5711 - 5712 - { "dqua", ZRC(59,3,0), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, 5713 - { "dqua.", ZRC(59,3,1), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, 5714 - 5715 - { "fdivs", A(59,18,0), AFRC_MASK, PPC, { FRT, FRA, FRB } }, 5716 - { "fdivs.", A(59,18,1), AFRC_MASK, PPC, { FRT, FRA, FRB } }, 5717 - 5718 - { "fsubs", A(59,20,0), AFRC_MASK, PPC, { FRT, FRA, FRB } }, 5719 - { "fsubs.", A(59,20,1), AFRC_MASK, PPC, { FRT, FRA, FRB } }, 5720 - 5721 - { "fadds", A(59,21,0), AFRC_MASK, PPC, { FRT, FRA, FRB } }, 5722 - { "fadds.", A(59,21,1), AFRC_MASK, PPC, { FRT, FRA, FRB } }, 5723 - 5724 - { "fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, { FRT, FRB } }, 5725 - { "fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, { FRT, FRB } }, 5726 - 5727 - { "fres", A(59,24,0), AFRALFRC_MASK, PPC, { FRT, FRB, A_L } }, 5728 - { "fres.", A(59,24,1), AFRALFRC_MASK, PPC, { FRT, FRB, A_L } }, 5729 - 5730 - { "fmuls", A(59,25,0), AFRB_MASK, PPC, { FRT, FRA, FRC } }, 5731 - { "fmuls.", A(59,25,1), AFRB_MASK, PPC, { FRT, FRA, FRC } }, 5732 - 5733 - { "frsqrtes", A(59,26,0), AFRALFRC_MASK,POWER5, { FRT, FRB, A_L } }, 5734 - { "frsqrtes.",A(59,26,1), AFRALFRC_MASK,POWER5, { FRT, FRB, A_L } }, 5735 - 5736 - { "fmsubs", A(59,28,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, 5737 - { "fmsubs.", A(59,28,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, 5738 - 5739 - { "fmadds", A(59,29,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, 5740 - { "fmadds.", A(59,29,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, 5741 - 5742 - { "fnmsubs", A(59,30,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, 5743 - { "fnmsubs.",A(59,30,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, 5744 - 5745 - { "fnmadds", A(59,31,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, 5746 - { "fnmadds.",A(59,31,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, 5747 - 5748 - { "dmul", XRC(59,34,0), X_MASK, POWER6, { FRT, FRA, FRB } }, 5749 - { "dmul.", XRC(59,34,1), X_MASK, POWER6, { FRT, FRA, FRB } }, 5750 - 5751 - { "drrnd", ZRC(59,35,0), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, 5752 - { "drrnd.", ZRC(59,35,1), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, 5753 - 5754 - { "dscli", ZRC(59,66,0), Z_MASK, POWER6, { FRT, FRA, SH16 } }, 5755 - { "dscli.", ZRC(59,66,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, 5756 - 5757 - { "dquai", ZRC(59,67,0), Z_MASK, POWER6, { TE, FRT, FRB, RMC } }, 5758 - { "dquai.", ZRC(59,67,1), Z_MASK, POWER6, { TE, FRT, FRB, RMC } }, 5759 - 5760 - { "dscri", ZRC(59,98,0), Z_MASK, POWER6, { FRT, FRA, SH16 } }, 5761 - { "dscri.", ZRC(59,98,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, 5762 - 5763 - { "drintx", ZRC(59,99,0), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, 5764 - { "drintx.", ZRC(59,99,1), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, 5765 - 5766 - { "dcmpo", X(59,130), X_MASK, POWER6, { BF, FRA, FRB } }, 5767 - 5768 - { "dtstex", X(59,162), X_MASK, POWER6, { BF, FRA, FRB } }, 5769 - { "dtstdc", Z(59,194), Z_MASK, POWER6, { BF, FRA, DCM } }, 5770 - { "dtstdg", Z(59,226), Z_MASK, POWER6, { BF, FRA, DGM } }, 5771 - 5772 - { "drintn", ZRC(59,227,0), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, 5773 - { "drintn.", ZRC(59,227,1), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, 5774 - 5775 - { "dctdp", XRC(59,258,0), X_MASK, POWER6, { FRT, FRB } }, 5776 - { "dctdp.", XRC(59,258,1), X_MASK, POWER6, { FRT, FRB } }, 5777 - 5778 - { "dctfix", XRC(59,290,0), X_MASK, POWER6, { FRT, FRB } }, 5779 - { "dctfix.", XRC(59,290,1), X_MASK, POWER6, { FRT, FRB } }, 5780 - 5781 - { "ddedpd", XRC(59,322,0), X_MASK, POWER6, { SP, FRT, FRB } }, 5782 - { "ddedpd.", XRC(59,322,1), X_MASK, POWER6, { SP, FRT, FRB } }, 5783 - 5784 - { "dxex", XRC(59,354,0), X_MASK, POWER6, { FRT, FRB } }, 5785 - { "dxex.", XRC(59,354,1), X_MASK, POWER6, { FRT, FRB } }, 5786 - 5787 - { "dsub", XRC(59,514,0), X_MASK, POWER6, { FRT, FRA, FRB } }, 5788 - { "dsub.", XRC(59,514,1), X_MASK, POWER6, { FRT, FRA, FRB } }, 5789 - 5790 - { "ddiv", XRC(59,546,0), X_MASK, POWER6, { FRT, FRA, FRB } }, 5791 - { "ddiv.", XRC(59,546,1), X_MASK, POWER6, { FRT, FRA, FRB } }, 5792 - 5793 - { "dcmpu", X(59,642), X_MASK, POWER6, { BF, FRA, FRB } }, 5794 - 5795 - { "dtstsf", X(59,674), X_MASK, POWER6, { BF, FRA, FRB } }, 5796 - 5797 - { "drsp", XRC(59,770,0), X_MASK, POWER6, { FRT, FRB } }, 5798 - { "drsp.", XRC(59,770,1), X_MASK, POWER6, { FRT, FRB } }, 5799 - 5800 - { "dcffix", XRC(59,802,0), X_MASK, POWER6, { FRT, FRB } }, 5801 - { "dcffix.", XRC(59,802,1), X_MASK, POWER6, { FRT, FRB } }, 5802 - 5803 - { "denbcd", XRC(59,834,0), X_MASK, POWER6, { S, FRT, FRB } }, 5804 - { "denbcd.", XRC(59,834,1), X_MASK, POWER6, { S, FRT, FRB } }, 5805 - 5806 - { "diex", XRC(59,866,0), X_MASK, POWER6, { FRT, FRA, FRB } }, 5807 - { "diex.", XRC(59,866,1), X_MASK, POWER6, { FRT, FRA, FRB } }, 5808 - 5809 - { "stfq", OP(60), OP_MASK, POWER2, { FRS, D, RA } }, 5810 - 5811 - { "stfqu", OP(61), OP_MASK, POWER2, { FRS, D, RA } }, 5812 - 5813 - { "stfdp", OP(61), OP_MASK, POWER6, { FRT, D, RA0 } }, 5814 - 5815 - { "lde", DEO(62,0), DE_MASK, BOOKE64, { RT, DES, RA0 } }, 5816 - { "ldue", DEO(62,1), DE_MASK, BOOKE64, { RT, DES, RA0 } }, 5817 - { "lfse", DEO(62,4), DE_MASK, BOOKE64, { FRT, DES, RA0 } }, 5818 - { "lfsue", DEO(62,5), DE_MASK, BOOKE64, { FRT, DES, RAS } }, 5819 - { "lfde", DEO(62,6), DE_MASK, BOOKE64, { FRT, DES, RA0 } }, 5820 - { "lfdue", DEO(62,7), DE_MASK, BOOKE64, { FRT, DES, RAS } }, 5821 - { "stde", DEO(62,8), DE_MASK, BOOKE64, { RS, DES, RA0 } }, 5822 - { "stdue", DEO(62,9), DE_MASK, BOOKE64, { RS, DES, RAS } }, 5823 - { "stfse", DEO(62,12), DE_MASK, BOOKE64, { FRS, DES, RA0 } }, 5824 - { "stfsue", DEO(62,13), DE_MASK, BOOKE64, { FRS, DES, RAS } }, 5825 - { "stfde", DEO(62,14), DE_MASK, BOOKE64, { FRS, DES, RA0 } }, 5826 - { "stfdue", DEO(62,15), DE_MASK, BOOKE64, { FRS, DES, RAS } }, 5827 - 5828 - { "std", DSO(62,0), DS_MASK, PPC64, { RS, DS, RA0 } }, 5829 - 5830 - { "stdu", DSO(62,1), DS_MASK, PPC64, { RS, DS, RAS } }, 5831 - 5832 - { "stq", DSO(62,2), DS_MASK, POWER4, { RSQ, DS, RA0 } }, 5833 - 5834 - { "fcmpu", X(63,0), X_MASK|(3<<21), COM, { BF, FRA, FRB } }, 5835 - 5836 - { "daddq", XRC(63,2,0), X_MASK, POWER6, { FRT, FRA, FRB } }, 5837 - { "daddq.", XRC(63,2,1), X_MASK, POWER6, { FRT, FRA, FRB } }, 5838 - 5839 - { "dquaq", ZRC(63,3,0), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, 5840 - { "dquaq.", ZRC(63,3,1), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, 5841 - 5842 - { "fcpsgn", XRC(63,8,0), X_MASK, POWER6, { FRT, FRA, FRB } }, 5843 - { "fcpsgn.", XRC(63,8,1), X_MASK, POWER6, { FRT, FRA, FRB } }, 5844 - 5845 - { "frsp", XRC(63,12,0), XRA_MASK, COM, { FRT, FRB } }, 5846 - { "frsp.", XRC(63,12,1), XRA_MASK, COM, { FRT, FRB } }, 5847 - 5848 - { "fctiw", XRC(63,14,0), XRA_MASK, PPCCOM, { FRT, FRB } }, 5849 - { "fcir", XRC(63,14,0), XRA_MASK, POWER2, { FRT, FRB } }, 5850 - { "fctiw.", XRC(63,14,1), XRA_MASK, PPCCOM, { FRT, FRB } }, 5851 - { "fcir.", XRC(63,14,1), XRA_MASK, POWER2, { FRT, FRB } }, 5852 - 5853 - { "fctiwz", XRC(63,15,0), XRA_MASK, PPCCOM, { FRT, FRB } }, 5854 - { "fcirz", XRC(63,15,0), XRA_MASK, POWER2, { FRT, FRB } }, 5855 - { "fctiwz.", XRC(63,15,1), XRA_MASK, PPCCOM, { FRT, FRB } }, 5856 - { "fcirz.", XRC(63,15,1), XRA_MASK, POWER2, { FRT, FRB } }, 5857 - 5858 - { "fdiv", A(63,18,0), AFRC_MASK, PPCCOM, { FRT, FRA, FRB } }, 5859 - { "fd", A(63,18,0), AFRC_MASK, PWRCOM, { FRT, FRA, FRB } }, 5860 - { "fdiv.", A(63,18,1), AFRC_MASK, PPCCOM, { FRT, FRA, FRB } }, 5861 - { "fd.", A(63,18,1), AFRC_MASK, PWRCOM, { FRT, FRA, FRB } }, 5862 - 5863 - { "fsub", A(63,20,0), AFRC_MASK, PPCCOM, { FRT, FRA, FRB } }, 5864 - { "fs", A(63,20,0), AFRC_MASK, PWRCOM, { FRT, FRA, FRB } }, 5865 - { "fsub.", A(63,20,1), AFRC_MASK, PPCCOM, { FRT, FRA, FRB } }, 5866 - { "fs.", A(63,20,1), AFRC_MASK, PWRCOM, { FRT, FRA, FRB } }, 5867 - 5868 - { "fadd", A(63,21,0), AFRC_MASK, PPCCOM, { FRT, FRA, FRB } }, 5869 - { "fa", A(63,21,0), AFRC_MASK, PWRCOM, { FRT, FRA, FRB } }, 5870 - { "fadd.", A(63,21,1), AFRC_MASK, PPCCOM, { FRT, FRA, FRB } }, 5871 - { "fa.", A(63,21,1), AFRC_MASK, PWRCOM, { FRT, FRA, FRB } }, 5872 - 5873 - { "fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, { FRT, FRB } }, 5874 - { "fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, { FRT, FRB } }, 5875 - 5876 - { "fsel", A(63,23,0), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, 5877 - { "fsel.", A(63,23,1), A_MASK, PPC, { FRT,FRA,FRC,FRB } }, 5878 - 5879 - { "fre", A(63,24,0), AFRALFRC_MASK, POWER5, { FRT, FRB, A_L } }, 5880 - { "fre.", A(63,24,1), AFRALFRC_MASK, POWER5, { FRT, FRB, A_L } }, 5881 - 5882 - { "fmul", A(63,25,0), AFRB_MASK, PPCCOM, { FRT, FRA, FRC } }, 5883 - { "fm", A(63,25,0), AFRB_MASK, PWRCOM, { FRT, FRA, FRC } }, 5884 - { "fmul.", A(63,25,1), AFRB_MASK, PPCCOM, { FRT, FRA, FRC } }, 5885 - { "fm.", A(63,25,1), AFRB_MASK, PWRCOM, { FRT, FRA, FRC } }, 5886 - 5887 - { "frsqrte", A(63,26,0), AFRALFRC_MASK, PPC, { FRT, FRB, A_L } }, 5888 - { "frsqrte.",A(63,26,1), AFRALFRC_MASK, PPC, { FRT, FRB, A_L } }, 5889 - 5890 - { "fmsub", A(63,28,0), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, 5891 - { "fms", A(63,28,0), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, 5892 - { "fmsub.", A(63,28,1), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, 5893 - { "fms.", A(63,28,1), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, 5894 - 5895 - { "fmadd", A(63,29,0), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, 5896 - { "fma", A(63,29,0), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, 5897 - { "fmadd.", A(63,29,1), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, 5898 - { "fma.", A(63,29,1), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, 5899 - 5900 - { "fnmsub", A(63,30,0), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, 5901 - { "fnms", A(63,30,0), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, 5902 - { "fnmsub.", A(63,30,1), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, 5903 - { "fnms.", A(63,30,1), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, 5904 - 5905 - { "fnmadd", A(63,31,0), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, 5906 - { "fnma", A(63,31,0), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, 5907 - { "fnmadd.", A(63,31,1), A_MASK, PPCCOM, { FRT,FRA,FRC,FRB } }, 5908 - { "fnma.", A(63,31,1), A_MASK, PWRCOM, { FRT,FRA,FRC,FRB } }, 5909 - 5910 - { "fcmpo", X(63,32), X_MASK|(3<<21), COM, { BF, FRA, FRB } }, 5911 - 5912 - { "dmulq", XRC(63,34,0), X_MASK, POWER6, { FRT, FRA, FRB } }, 5913 - { "dmulq.", XRC(63,34,1), X_MASK, POWER6, { FRT, FRA, FRB } }, 5914 - 5915 - { "drrndq", ZRC(63,35,0), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, 5916 - { "drrndq.", ZRC(63,35,1), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, 5917 - 5918 - { "mtfsb1", XRC(63,38,0), XRARB_MASK, COM, { BT } }, 5919 - { "mtfsb1.", XRC(63,38,1), XRARB_MASK, COM, { BT } }, 5920 - 5921 - { "fneg", XRC(63,40,0), XRA_MASK, COM, { FRT, FRB } }, 5922 - { "fneg.", XRC(63,40,1), XRA_MASK, COM, { FRT, FRB } }, 5923 - 5924 - { "mcrfs", X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, { BF, BFA } }, 5925 - 5926 - { "dscliq", ZRC(63,66,0), Z_MASK, POWER6, { FRT, FRA, SH16 } }, 5927 - { "dscliq.", ZRC(63,66,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, 5928 - 5929 - { "dquaiq", ZRC(63,67,0), Z_MASK, POWER6, { TE, FRT, FRB, RMC } }, 5930 - { "dquaiq.", ZRC(63,67,1), Z_MASK, POWER6, { FRT, FRA, FRB, RMC } }, 5931 - 5932 - { "mtfsb0", XRC(63,70,0), XRARB_MASK, COM, { BT } }, 5933 - { "mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, { BT } }, 5934 - 5935 - { "fmr", XRC(63,72,0), XRA_MASK, COM, { FRT, FRB } }, 5936 - { "fmr.", XRC(63,72,1), XRA_MASK, COM, { FRT, FRB } }, 5937 - 5938 - { "dscriq", ZRC(63,98,0), Z_MASK, POWER6, { FRT, FRA, SH16 } }, 5939 - { "dscriq.", ZRC(63,98,1), Z_MASK, POWER6, { FRT, FRA, SH16 } }, 5940 - 5941 - { "drintxq", ZRC(63,99,0), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, 5942 - { "drintxq.",ZRC(63,99,1), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, 5943 - 5944 - { "dcmpoq", X(63,130), X_MASK, POWER6, { BF, FRA, FRB } }, 5945 - 5946 - { "mtfsfi", XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, { BF, U } }, 5947 - { "mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, { BF, U } }, 5948 - 5949 - { "fnabs", XRC(63,136,0), XRA_MASK, COM, { FRT, FRB } }, 5950 - { "fnabs.", XRC(63,136,1), XRA_MASK, COM, { FRT, FRB } }, 5951 - 5952 - { "dtstexq", X(63,162), X_MASK, POWER6, { BF, FRA, FRB } }, 5953 - { "dtstdcq", Z(63,194), Z_MASK, POWER6, { BF, FRA, DCM } }, 5954 - { "dtstdgq", Z(63,226), Z_MASK, POWER6, { BF, FRA, DGM } }, 5955 - 5956 - { "drintnq", ZRC(63,227,0), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, 5957 - { "drintnq.",ZRC(63,227,1), Z_MASK, POWER6, { R, FRT, FRB, RMC } }, 5958 - 5959 - { "dctqpq", XRC(63,258,0), X_MASK, POWER6, { FRT, FRB } }, 5960 - { "dctqpq.", XRC(63,258,1), X_MASK, POWER6, { FRT, FRB } }, 5961 - 5962 - { "fabs", XRC(63,264,0), XRA_MASK, COM, { FRT, FRB } }, 5963 - { "fabs.", XRC(63,264,1), XRA_MASK, COM, { FRT, FRB } }, 5964 - 5965 - { "dctfixq", XRC(63,290,0), X_MASK, POWER6, { FRT, FRB } }, 5966 - { "dctfixq.",XRC(63,290,1), X_MASK, POWER6, { FRT, FRB } }, 5967 - 5968 - { "ddedpdq", XRC(63,322,0), X_MASK, POWER6, { SP, FRT, FRB } }, 5969 - { "ddedpdq.",XRC(63,322,1), X_MASK, POWER6, { SP, FRT, FRB } }, 5970 - 5971 - { "dxexq", XRC(63,354,0), X_MASK, POWER6, { FRT, FRB } }, 5972 - { "dxexq.", XRC(63,354,1), X_MASK, POWER6, { FRT, FRB } }, 5973 - 5974 - { "frin", XRC(63,392,0), XRA_MASK, POWER5, { FRT, FRB } }, 5975 - { "frin.", XRC(63,392,1), XRA_MASK, POWER5, { FRT, FRB } }, 5976 - { "friz", XRC(63,424,0), XRA_MASK, POWER5, { FRT, FRB } }, 5977 - { "friz.", XRC(63,424,1), XRA_MASK, POWER5, { FRT, FRB } }, 5978 - { "frip", XRC(63,456,0), XRA_MASK, POWER5, { FRT, FRB } }, 5979 - { "frip.", XRC(63,456,1), XRA_MASK, POWER5, { FRT, FRB } }, 5980 - { "frim", XRC(63,488,0), XRA_MASK, POWER5, { FRT, FRB } }, 5981 - { "frim.", XRC(63,488,1), XRA_MASK, POWER5, { FRT, FRB } }, 5982 - 5983 - { "dsubq", XRC(63,514,0), X_MASK, POWER6, { FRT, FRA, FRB } }, 5984 - { "dsubq.", XRC(63,514,1), X_MASK, POWER6, { FRT, FRA, FRB } }, 5985 - 5986 - { "ddivq", XRC(63,546,0), X_MASK, POWER6, { FRT, FRA, FRB } }, 5987 - { "ddivq.", XRC(63,546,1), X_MASK, POWER6, { FRT, FRA, FRB } }, 5988 - 5989 - { "mffs", XRC(63,583,0), XRARB_MASK, COM, { FRT } }, 5990 - { "mffs.", XRC(63,583,1), XRARB_MASK, COM, { FRT } }, 5991 - 5992 - { "dcmpuq", X(63,642), X_MASK, POWER6, { BF, FRA, FRB } }, 5993 - 5994 - { "dtstsfq", X(63,674), X_MASK, POWER6, { BF, FRA, FRB } }, 5995 - 5996 - { "mtfsf", XFL(63,711,0), XFL_MASK, COM, { FLM, FRB } }, 5997 - { "mtfsf.", XFL(63,711,1), XFL_MASK, COM, { FLM, FRB } }, 5998 - 5999 - { "drdpq", XRC(63,770,0), X_MASK, POWER6, { FRT, FRB } }, 6000 - { "drdpq.", XRC(63,770,1), X_MASK, POWER6, { FRT, FRB } }, 6001 - 6002 - { "dcffixq", XRC(63,802,0), X_MASK, POWER6, { FRT, FRB } }, 6003 - { "dcffixq.",XRC(63,802,1), X_MASK, POWER6, { FRT, FRB } }, 6004 - 6005 - { "fctid", XRC(63,814,0), XRA_MASK, PPC64, { FRT, FRB } }, 6006 - { "fctid.", XRC(63,814,1), XRA_MASK, PPC64, { FRT, FRB } }, 6007 - 6008 - { "fctidz", XRC(63,815,0), XRA_MASK, PPC64, { FRT, FRB } }, 6009 - { "fctidz.", XRC(63,815,1), XRA_MASK, PPC64, { FRT, FRB } }, 6010 - 6011 - { "denbcdq", XRC(63,834,0), X_MASK, POWER6, { S, FRT, FRB } }, 6012 - { "denbcdq.",XRC(63,834,1), X_MASK, POWER6, { S, FRT, FRB } }, 6013 - 6014 - { "fcfid", XRC(63,846,0), XRA_MASK, PPC64, { FRT, FRB } }, 6015 - { "fcfid.", XRC(63,846,1), XRA_MASK, PPC64, { FRT, FRB } }, 6016 - 6017 - { "diexq", XRC(63,866,0), X_MASK, POWER6, { FRT, FRA, FRB } }, 6018 - { "diexq.", XRC(63,866,1), X_MASK, POWER6, { FRT, FRA, FRB } }, 6019 - 1964 + {"attn", X(0,256), X_MASK, POWER4|PPCA2, PPC476|PPCVLE, {0}}, 1965 + {"tdlgti", OPTO(2,TOLGT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1966 + {"tdllti", OPTO(2,TOLLT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1967 + {"tdeqi", OPTO(2,TOEQ), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1968 + {"tdlgei", OPTO(2,TOLGE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1969 + {"tdlnli", OPTO(2,TOLNL), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1970 + {"tdllei", OPTO(2,TOLLE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1971 + {"tdlngi", OPTO(2,TOLNG), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1972 + {"tdgti", OPTO(2,TOGT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1973 + {"tdgei", OPTO(2,TOGE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1974 + {"tdnli", OPTO(2,TONL), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1975 + {"tdlti", OPTO(2,TOLT), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1976 + {"tdlei", OPTO(2,TOLE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1977 + {"tdngi", OPTO(2,TONG), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1978 + {"tdnei", OPTO(2,TONE), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1979 + {"tdui", OPTO(2,TOU), OPTO_MASK, PPC64, PPCVLE, {RA, SI}}, 1980 + {"tdi", OP(2), OP_MASK, PPC64, PPCVLE, {TO, RA, SI}}, 1981 + 1982 + {"twlgti", OPTO(3,TOLGT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 1983 + {"tlgti", OPTO(3,TOLGT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 1984 + {"twllti", OPTO(3,TOLLT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 1985 + {"tllti", OPTO(3,TOLLT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 1986 + {"tweqi", OPTO(3,TOEQ), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 1987 + {"teqi", OPTO(3,TOEQ), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 1988 + {"twlgei", OPTO(3,TOLGE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 1989 + {"tlgei", OPTO(3,TOLGE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 1990 + {"twlnli", OPTO(3,TOLNL), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 1991 + {"tlnli", OPTO(3,TOLNL), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 1992 + {"twllei", OPTO(3,TOLLE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 1993 + {"tllei", OPTO(3,TOLLE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 1994 + {"twlngi", OPTO(3,TOLNG), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 1995 + {"tlngi", OPTO(3,TOLNG), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 1996 + {"twgti", OPTO(3,TOGT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 1997 + {"tgti", OPTO(3,TOGT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 1998 + {"twgei", OPTO(3,TOGE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 1999 + {"tgei", OPTO(3,TOGE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 2000 + {"twnli", OPTO(3,TONL), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 2001 + {"tnli", OPTO(3,TONL), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 2002 + {"twlti", OPTO(3,TOLT), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 2003 + {"tlti", OPTO(3,TOLT), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 2004 + {"twlei", OPTO(3,TOLE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 2005 + {"tlei", OPTO(3,TOLE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 2006 + {"twngi", OPTO(3,TONG), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 2007 + {"tngi", OPTO(3,TONG), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 2008 + {"twnei", OPTO(3,TONE), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 2009 + {"tnei", OPTO(3,TONE), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 2010 + {"twui", OPTO(3,TOU), OPTO_MASK, PPCCOM, PPCVLE, {RA, SI}}, 2011 + {"tui", OPTO(3,TOU), OPTO_MASK, PWRCOM, PPCVLE, {RA, SI}}, 2012 + {"twi", OP(3), OP_MASK, PPCCOM, PPCVLE, {TO, RA, SI}}, 2013 + {"ti", OP(3), OP_MASK, PWRCOM, PPCVLE, {TO, RA, SI}}, 2014 + 2015 + {"ps_cmpu0", X (4, 0), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}}, 2016 + {"vaddubm", VX (4, 0), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2017 + {"vmul10cuq", VX (4, 1), VXVB_MASK, PPCVEC3, 0, {VD, VA}}, 2018 + {"vmaxub", VX (4, 2), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2019 + {"vrlb", VX (4, 4), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2020 + {"vcmpequb", VXR(4, 6,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2021 + {"vcmpneb", VXR(4, 7,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2022 + {"vmuloub", VX (4, 8), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2023 + {"vaddfp", VX (4, 10), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2024 + {"psq_lx", XW (4, 6,0), XW_MASK, PPCPS, 0, {FRT,RA,RB,PSWM,PSQM}}, 2025 + {"vmrghb", VX (4, 12), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2026 + {"psq_stx", XW (4, 7,0), XW_MASK, PPCPS, 0, {FRS,RA,RB,PSWM,PSQM}}, 2027 + {"vpkuhum", VX (4, 14), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2028 + {"mulhhwu", XRC(4, 8,0), X_MASK, MULHW, 0, {RT, RA, RB}}, 2029 + {"mulhhwu.", XRC(4, 8,1), X_MASK, MULHW, 0, {RT, RA, RB}}, 2030 + {"ps_sum0", A (4, 10,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2031 + {"ps_sum0.", A (4, 10,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2032 + {"ps_sum1", A (4, 11,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2033 + {"ps_sum1.", A (4, 11,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2034 + {"ps_muls0", A (4, 12,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}}, 2035 + {"machhwu", XO (4, 12,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2036 + {"ps_muls0.", A (4, 12,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}}, 2037 + {"machhwu.", XO (4, 12,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2038 + {"ps_muls1", A (4, 13,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}}, 2039 + {"ps_muls1.", A (4, 13,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}}, 2040 + {"ps_madds0", A (4, 14,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2041 + {"ps_madds0.", A (4, 14,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2042 + {"ps_madds1", A (4, 15,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2043 + {"ps_madds1.", A (4, 15,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2044 + {"vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}}, 2045 + {"vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}}, 2046 + {"vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}}, 2047 + {"vmsumudm", VXA(4, 35), VXA_MASK, PPCVEC3, 0, {VD, VA, VB, VC}}, 2048 + {"ps_div", A (4, 18,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2049 + {"vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}}, 2050 + {"ps_div.", A (4, 18,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2051 + {"vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}}, 2052 + {"vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}}, 2053 + {"vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}}, 2054 + {"ps_sub", A (4, 20,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2055 + {"vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}}, 2056 + {"ps_sub.", A (4, 20,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2057 + {"vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}}, 2058 + {"ps_add", A (4, 21,0), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2059 + {"vsel", VXA(4, 42), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}}, 2060 + {"ps_add.", A (4, 21,1), AFRC_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2061 + {"vperm", VXA(4, 43), VXA_MASK, PPCVEC, 0, {VD, VA, VB, VC}}, 2062 + {"vsldoi", VXA(4, 44), VXASHB_MASK, PPCVEC, 0, {VD, VA, VB, SHB}}, 2063 + {"vpermxor", VXA(4, 45), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}}, 2064 + {"ps_sel", A (4, 23,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2065 + {"vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, 0, {VD, VA, VC, VB}}, 2066 + {"ps_sel.", A (4, 23,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2067 + {"vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, 0, {VD, VA, VC, VB}}, 2068 + {"ps_res", A (4, 24,0), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}}, 2069 + {"maddhd", VXA(4, 48), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}}, 2070 + {"ps_res.", A (4, 24,1), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}}, 2071 + {"maddhdu", VXA(4, 49), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}}, 2072 + {"ps_mul", A (4, 25,0), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}}, 2073 + {"ps_mul.", A (4, 25,1), AFRB_MASK, PPCPS, 0, {FRT, FRA, FRC}}, 2074 + {"maddld", VXA(4, 51), VXA_MASK, POWER9, 0, {RT, RA, RB, RC}}, 2075 + {"ps_rsqrte", A (4, 26,0), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}}, 2076 + {"ps_rsqrte.", A (4, 26,1), AFRAFRC_MASK, PPCPS, 0, {FRT, FRB}}, 2077 + {"ps_msub", A (4, 28,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2078 + {"ps_msub.", A (4, 28,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2079 + {"ps_madd", A (4, 29,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2080 + {"ps_madd.", A (4, 29,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2081 + {"vpermr", VXA(4, 59), VXA_MASK, PPCVEC3, 0, {VD, VA, VB, VC}}, 2082 + {"ps_nmsub", A (4, 30,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2083 + {"vaddeuqm", VXA(4, 60), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}}, 2084 + {"ps_nmsub.", A (4, 30,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2085 + {"vaddecuq", VXA(4, 61), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}}, 2086 + {"ps_nmadd", A (4, 31,0), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2087 + {"vsubeuqm", VXA(4, 62), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}}, 2088 + {"ps_nmadd.", A (4, 31,1), A_MASK, PPCPS, 0, {FRT, FRA, FRC, FRB}}, 2089 + {"vsubecuq", VXA(4, 63), VXA_MASK, PPCVEC2, 0, {VD, VA, VB, VC}}, 2090 + {"ps_cmpo0", X (4, 32), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}}, 2091 + {"vadduhm", VX (4, 64), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2092 + {"vmul10ecuq", VX (4, 65), VX_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2093 + {"vmaxuh", VX (4, 66), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2094 + {"vrlh", VX (4, 68), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2095 + {"vcmpequh", VXR(4, 70,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2096 + {"vcmpneh", VXR(4, 71,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2097 + {"vmulouh", VX (4, 72), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2098 + {"vsubfp", VX (4, 74), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2099 + {"psq_lux", XW (4, 38,0), XW_MASK, PPCPS, 0, {FRT,RA,RB,PSWM,PSQM}}, 2100 + {"vmrghh", VX (4, 76), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2101 + {"psq_stux", XW (4, 39,0), XW_MASK, PPCPS, 0, {FRS,RA,RB,PSWM,PSQM}}, 2102 + {"vpkuwum", VX (4, 78), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2103 + {"ps_neg", XRC(4, 40,0), XRA_MASK, PPCPS, 0, {FRT, FRB}}, 2104 + {"mulhhw", XRC(4, 40,0), X_MASK, MULHW, 0, {RT, RA, RB}}, 2105 + {"ps_neg.", XRC(4, 40,1), XRA_MASK, PPCPS, 0, {FRT, FRB}}, 2106 + {"mulhhw.", XRC(4, 40,1), X_MASK, MULHW, 0, {RT, RA, RB}}, 2107 + {"machhw", XO (4, 44,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2108 + {"machhw.", XO (4, 44,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2109 + {"nmachhw", XO (4, 46,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2110 + {"nmachhw.", XO (4, 46,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2111 + {"ps_cmpu1", X (4, 64), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}}, 2112 + {"vadduwm", VX (4, 128), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2113 + {"vmaxuw", VX (4, 130), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2114 + {"vrlw", VX (4, 132), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2115 + {"vrlwmi", VX (4, 133), VX_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2116 + {"vcmpequw", VXR(4, 134,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2117 + {"vcmpnew", VXR(4, 135,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2118 + {"vmulouw", VX (4, 136), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2119 + {"vmuluwm", VX (4, 137), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2120 + {"vmrghw", VX (4, 140), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2121 + {"vpkuhus", VX (4, 142), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2122 + {"ps_mr", XRC(4, 72,0), XRA_MASK, PPCPS, 0, {FRT, FRB}}, 2123 + {"ps_mr.", XRC(4, 72,1), XRA_MASK, PPCPS, 0, {FRT, FRB}}, 2124 + {"machhwsu", XO (4, 76,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2125 + {"machhwsu.", XO (4, 76,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2126 + {"ps_cmpo1", X (4, 96), XBF_MASK, PPCPS, 0, {BF, FRA, FRB}}, 2127 + {"vaddudm", VX (4, 192), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2128 + {"vmaxud", VX (4, 194), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2129 + {"vrld", VX (4, 196), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2130 + {"vrldmi", VX (4, 197), VX_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2131 + {"vcmpeqfp", VXR(4, 198,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2132 + {"vcmpequd", VXR(4, 199,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2133 + {"vpkuwus", VX (4, 206), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2134 + {"machhws", XO (4, 108,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2135 + {"machhws.", XO (4, 108,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2136 + {"nmachhws", XO (4, 110,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2137 + {"nmachhws.", XO (4, 110,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2138 + {"vadduqm", VX (4, 256), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2139 + {"vmaxsb", VX (4, 258), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2140 + {"vslb", VX (4, 260), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2141 + {"vcmpnezb", VXR(4, 263,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2142 + {"vmulosb", VX (4, 264), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2143 + {"vrefp", VX (4, 266), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2144 + {"vmrglb", VX (4, 268), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2145 + {"vpkshus", VX (4, 270), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2146 + {"ps_nabs", XRC(4, 136,0), XRA_MASK, PPCPS, 0, {FRT, FRB}}, 2147 + {"mulchwu", XRC(4, 136,0), X_MASK, MULHW, 0, {RT, RA, RB}}, 2148 + {"ps_nabs.", XRC(4, 136,1), XRA_MASK, PPCPS, 0, {FRT, FRB}}, 2149 + {"mulchwu.", XRC(4, 136,1), X_MASK, MULHW, 0, {RT, RA, RB}}, 2150 + {"macchwu", XO (4, 140,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2151 + {"macchwu.", XO (4, 140,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2152 + {"vaddcuq", VX (4, 320), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2153 + {"vmaxsh", VX (4, 322), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2154 + {"vslh", VX (4, 324), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2155 + {"vcmpnezh", VXR(4, 327,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2156 + {"vmulosh", VX (4, 328), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2157 + {"vrsqrtefp", VX (4, 330), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2158 + {"vmrglh", VX (4, 332), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2159 + {"vpkswus", VX (4, 334), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2160 + {"mulchw", XRC(4, 168,0), X_MASK, MULHW, 0, {RT, RA, RB}}, 2161 + {"mulchw.", XRC(4, 168,1), X_MASK, MULHW, 0, {RT, RA, RB}}, 2162 + {"macchw", XO (4, 172,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2163 + {"macchw.", XO (4, 172,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2164 + {"nmacchw", XO (4, 174,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2165 + {"nmacchw.", XO (4, 174,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2166 + {"vaddcuw", VX (4, 384), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2167 + {"vmaxsw", VX (4, 386), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2168 + {"vslw", VX (4, 388), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2169 + {"vrlwnm", VX (4, 389), VX_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2170 + {"vcmpnezw", VXR(4, 391,0), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2171 + {"vmulosw", VX (4, 392), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2172 + {"vexptefp", VX (4, 394), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2173 + {"vmrglw", VX (4, 396), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2174 + {"vpkshss", VX (4, 398), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2175 + {"macchwsu", XO (4, 204,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2176 + {"macchwsu.", XO (4, 204,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2177 + {"vmaxsd", VX (4, 450), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2178 + {"vsl", VX (4, 452), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2179 + {"vrldnm", VX (4, 453), VX_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2180 + {"vcmpgefp", VXR(4, 454,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2181 + {"vlogefp", VX (4, 458), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2182 + {"vpkswss", VX (4, 462), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2183 + {"macchws", XO (4, 236,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2184 + {"macchws.", XO (4, 236,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2185 + {"nmacchws", XO (4, 238,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2186 + {"nmacchws.", XO (4, 238,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2187 + {"evaddw", VX (4, 512), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2188 + {"vaddubs", VX (4, 512), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2189 + {"vmul10uq", VX (4, 513), VXVB_MASK, PPCVEC3, 0, {VD, VA}}, 2190 + {"evaddiw", VX (4, 514), VX_MASK, PPCSPE, 0, {RS, RB, UIMM}}, 2191 + {"vminub", VX (4, 514), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2192 + {"evsubfw", VX (4, 516), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2193 + {"evsubw", VX (4, 516), VX_MASK, PPCSPE, 0, {RS, RB, RA}}, 2194 + {"vsrb", VX (4, 516), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2195 + {"evsubifw", VX (4, 518), VX_MASK, PPCSPE, 0, {RS, UIMM, RB}}, 2196 + {"evsubiw", VX (4, 518), VX_MASK, PPCSPE, 0, {RS, RB, UIMM}}, 2197 + {"vcmpgtub", VXR(4, 518,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2198 + {"evabs", VX (4, 520), VX_MASK, PPCSPE, 0, {RS, RA}}, 2199 + {"vmuleub", VX (4, 520), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2200 + {"evneg", VX (4, 521), VX_MASK, PPCSPE, 0, {RS, RA}}, 2201 + {"evextsb", VX (4, 522), VX_MASK, PPCSPE, 0, {RS, RA}}, 2202 + {"vrfin", VX (4, 522), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2203 + {"evextsh", VX (4, 523), VX_MASK, PPCSPE, 0, {RS, RA}}, 2204 + {"evrndw", VX (4, 524), VX_MASK, PPCSPE, 0, {RS, RA}}, 2205 + {"vspltb", VX (4, 524), VXUIMM4_MASK, PPCVEC, 0, {VD, VB, UIMM4}}, 2206 + {"vextractub", VX (4, 525), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}}, 2207 + {"evcntlzw", VX (4, 525), VX_MASK, PPCSPE, 0, {RS, RA}}, 2208 + {"evcntlsw", VX (4, 526), VX_MASK, PPCSPE, 0, {RS, RA}}, 2209 + {"vupkhsb", VX (4, 526), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2210 + {"brinc", VX (4, 527), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2211 + {"ps_abs", XRC(4, 264,0), XRA_MASK, PPCPS, 0, {FRT, FRB}}, 2212 + {"ps_abs.", XRC(4, 264,1), XRA_MASK, PPCPS, 0, {FRT, FRB}}, 2213 + {"evand", VX (4, 529), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2214 + {"evandc", VX (4, 530), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2215 + {"evxor", VX (4, 534), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2216 + {"evmr", VX (4, 535), VX_MASK, PPCSPE, 0, {RS, RA, BBA}}, 2217 + {"evor", VX (4, 535), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2218 + {"evnor", VX (4, 536), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2219 + {"evnot", VX (4, 536), VX_MASK, PPCSPE, 0, {RS, RA, BBA}}, 2220 + {"get", APU(4, 268,0), APU_RA_MASK, PPC405, 0, {RT, FSL}}, 2221 + {"eveqv", VX (4, 537), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2222 + {"evorc", VX (4, 539), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2223 + {"evnand", VX (4, 542), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2224 + {"evsrwu", VX (4, 544), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2225 + {"evsrws", VX (4, 545), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2226 + {"evsrwiu", VX (4, 546), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}}, 2227 + {"evsrwis", VX (4, 547), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}}, 2228 + {"evslw", VX (4, 548), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2229 + {"evslwi", VX (4, 550), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}}, 2230 + {"evrlw", VX (4, 552), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2231 + {"evsplati", VX (4, 553), VX_MASK, PPCSPE, 0, {RS, SIMM}}, 2232 + {"evrlwi", VX (4, 554), VX_MASK, PPCSPE, 0, {RS, RA, EVUIMM}}, 2233 + {"evsplatfi", VX (4, 555), VX_MASK, PPCSPE, 0, {RS, SIMM}}, 2234 + {"evmergehi", VX (4, 556), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2235 + {"evmergelo", VX (4, 557), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2236 + {"evmergehilo", VX (4, 558), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2237 + {"evmergelohi", VX (4, 559), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2238 + {"evcmpgtu", VX (4, 560), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}}, 2239 + {"evcmpgts", VX (4, 561), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}}, 2240 + {"evcmpltu", VX (4, 562), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}}, 2241 + {"evcmplts", VX (4, 563), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}}, 2242 + {"evcmpeq", VX (4, 564), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}}, 2243 + {"cget", APU(4, 284,0), APU_RA_MASK, PPC405, 0, {RT, FSL}}, 2244 + {"vadduhs", VX (4, 576), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2245 + {"vmul10euq", VX (4, 577), VX_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2246 + {"vminuh", VX (4, 578), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2247 + {"vsrh", VX (4, 580), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2248 + {"vcmpgtuh", VXR(4, 582,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2249 + {"vmuleuh", VX (4, 584), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2250 + {"vrfiz", VX (4, 586), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2251 + {"vsplth", VX (4, 588), VXUIMM3_MASK, PPCVEC, 0, {VD, VB, UIMM3}}, 2252 + {"vextractuh", VX (4, 589), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}}, 2253 + {"vupkhsh", VX (4, 590), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2254 + {"nget", APU(4, 300,0), APU_RA_MASK, PPC405, 0, {RT, FSL}}, 2255 + {"evsel", EVSEL(4,79), EVSEL_MASK, PPCSPE, 0, {RS, RA, RB, CRFS}}, 2256 + {"ncget", APU(4, 316,0), APU_RA_MASK, PPC405, 0, {RT, FSL}}, 2257 + {"evfsadd", VX (4, 640), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2258 + {"vadduws", VX (4, 640), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2259 + {"evfssub", VX (4, 641), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2260 + {"vminuw", VX (4, 642), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2261 + {"evfsabs", VX (4, 644), VX_MASK, PPCSPE, 0, {RS, RA}}, 2262 + {"vsrw", VX (4, 644), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2263 + {"evfsnabs", VX (4, 645), VX_MASK, PPCSPE, 0, {RS, RA}}, 2264 + {"evfsneg", VX (4, 646), VX_MASK, PPCSPE, 0, {RS, RA}}, 2265 + {"vcmpgtuw", VXR(4, 646,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2266 + {"vmuleuw", VX (4, 648), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2267 + {"evfsmul", VX (4, 648), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2268 + {"evfsdiv", VX (4, 649), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2269 + {"vrfip", VX (4, 650), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2270 + {"evfscmpgt", VX (4, 652), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}}, 2271 + {"vspltw", VX (4, 652), VXUIMM2_MASK, PPCVEC, 0, {VD, VB, UIMM2}}, 2272 + {"vextractuw", VX (4, 653), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}}, 2273 + {"evfscmplt", VX (4, 653), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}}, 2274 + {"evfscmpeq", VX (4, 654), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}}, 2275 + {"vupklsb", VX (4, 654), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2276 + {"evfscfui", VX (4, 656), VX_MASK, PPCSPE, 0, {RS, RB}}, 2277 + {"evfscfsi", VX (4, 657), VX_MASK, PPCSPE, 0, {RS, RB}}, 2278 + {"evfscfuf", VX (4, 658), VX_MASK, PPCSPE, 0, {RS, RB}}, 2279 + {"evfscfsf", VX (4, 659), VX_MASK, PPCSPE, 0, {RS, RB}}, 2280 + {"evfsctui", VX (4, 660), VX_MASK, PPCSPE, 0, {RS, RB}}, 2281 + {"evfsctsi", VX (4, 661), VX_MASK, PPCSPE, 0, {RS, RB}}, 2282 + {"evfsctuf", VX (4, 662), VX_MASK, PPCSPE, 0, {RS, RB}}, 2283 + {"evfsctsf", VX (4, 663), VX_MASK, PPCSPE, 0, {RS, RB}}, 2284 + {"evfsctuiz", VX (4, 664), VX_MASK, PPCSPE, 0, {RS, RB}}, 2285 + {"put", APU(4, 332,0), APU_RT_MASK, PPC405, 0, {RA, FSL}}, 2286 + {"evfsctsiz", VX (4, 666), VX_MASK, PPCSPE, 0, {RS, RB}}, 2287 + {"evfststgt", VX (4, 668), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}}, 2288 + {"evfststlt", VX (4, 669), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}}, 2289 + {"evfststeq", VX (4, 670), VX_MASK, PPCSPE, 0, {CRFD, RA, RB}}, 2290 + {"cput", APU(4, 348,0), APU_RT_MASK, PPC405, 0, {RA, FSL}}, 2291 + {"efsadd", VX (4, 704), VX_MASK, PPCEFS, 0, {RS, RA, RB}}, 2292 + {"efssub", VX (4, 705), VX_MASK, PPCEFS, 0, {RS, RA, RB}}, 2293 + {"vminud", VX (4, 706), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2294 + {"efsabs", VX (4, 708), VX_MASK, PPCEFS, 0, {RS, RA}}, 2295 + {"vsr", VX (4, 708), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2296 + {"efsnabs", VX (4, 709), VX_MASK, PPCEFS, 0, {RS, RA}}, 2297 + {"efsneg", VX (4, 710), VX_MASK, PPCEFS, 0, {RS, RA}}, 2298 + {"vcmpgtfp", VXR(4, 710,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2299 + {"vcmpgtud", VXR(4, 711,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2300 + {"efsmul", VX (4, 712), VX_MASK, PPCEFS, 0, {RS, RA, RB}}, 2301 + {"efsdiv", VX (4, 713), VX_MASK, PPCEFS, 0, {RS, RA, RB}}, 2302 + {"vrfim", VX (4, 714), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2303 + {"efscmpgt", VX (4, 716), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}}, 2304 + {"vextractd", VX (4, 717), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}}, 2305 + {"efscmplt", VX (4, 717), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}}, 2306 + {"efscmpeq", VX (4, 718), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}}, 2307 + {"vupklsh", VX (4, 718), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2308 + {"efscfd", VX (4, 719), VX_MASK, PPCEFS, 0, {RS, RB}}, 2309 + {"efscfui", VX (4, 720), VX_MASK, PPCEFS, 0, {RS, RB}}, 2310 + {"efscfsi", VX (4, 721), VX_MASK, PPCEFS, 0, {RS, RB}}, 2311 + {"efscfuf", VX (4, 722), VX_MASK, PPCEFS, 0, {RS, RB}}, 2312 + {"efscfsf", VX (4, 723), VX_MASK, PPCEFS, 0, {RS, RB}}, 2313 + {"efsctui", VX (4, 724), VX_MASK, PPCEFS, 0, {RS, RB}}, 2314 + {"efsctsi", VX (4, 725), VX_MASK, PPCEFS, 0, {RS, RB}}, 2315 + {"efsctuf", VX (4, 726), VX_MASK, PPCEFS, 0, {RS, RB}}, 2316 + {"efsctsf", VX (4, 727), VX_MASK, PPCEFS, 0, {RS, RB}}, 2317 + {"efsctuiz", VX (4, 728), VX_MASK, PPCEFS, 0, {RS, RB}}, 2318 + {"nput", APU(4, 364,0), APU_RT_MASK, PPC405, 0, {RA, FSL}}, 2319 + {"efsctsiz", VX (4, 730), VX_MASK, PPCEFS, 0, {RS, RB}}, 2320 + {"efststgt", VX (4, 732), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}}, 2321 + {"efststlt", VX (4, 733), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}}, 2322 + {"efststeq", VX (4, 734), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}}, 2323 + {"efdadd", VX (4, 736), VX_MASK, PPCEFS, 0, {RS, RA, RB}}, 2324 + {"efdsub", VX (4, 737), VX_MASK, PPCEFS, 0, {RS, RA, RB}}, 2325 + {"efdcfuid", VX (4, 738), VX_MASK, PPCEFS, 0, {RS, RB}}, 2326 + {"efdcfsid", VX (4, 739), VX_MASK, PPCEFS, 0, {RS, RB}}, 2327 + {"efdabs", VX (4, 740), VX_MASK, PPCEFS, 0, {RS, RA}}, 2328 + {"efdnabs", VX (4, 741), VX_MASK, PPCEFS, 0, {RS, RA}}, 2329 + {"efdneg", VX (4, 742), VX_MASK, PPCEFS, 0, {RS, RA}}, 2330 + {"efdmul", VX (4, 744), VX_MASK, PPCEFS, 0, {RS, RA, RB}}, 2331 + {"efddiv", VX (4, 745), VX_MASK, PPCEFS, 0, {RS, RA, RB}}, 2332 + {"efdctuidz", VX (4, 746), VX_MASK, PPCEFS, 0, {RS, RB}}, 2333 + {"efdctsidz", VX (4, 747), VX_MASK, PPCEFS, 0, {RS, RB}}, 2334 + {"efdcmpgt", VX (4, 748), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}}, 2335 + {"efdcmplt", VX (4, 749), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}}, 2336 + {"efdcmpeq", VX (4, 750), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}}, 2337 + {"efdcfs", VX (4, 751), VX_MASK, PPCEFS, 0, {RS, RB}}, 2338 + {"efdcfui", VX (4, 752), VX_MASK, PPCEFS, 0, {RS, RB}}, 2339 + {"efdcfsi", VX (4, 753), VX_MASK, PPCEFS, 0, {RS, RB}}, 2340 + {"efdcfuf", VX (4, 754), VX_MASK, PPCEFS, 0, {RS, RB}}, 2341 + {"efdcfsf", VX (4, 755), VX_MASK, PPCEFS, 0, {RS, RB}}, 2342 + {"efdctui", VX (4, 756), VX_MASK, PPCEFS, 0, {RS, RB}}, 2343 + {"efdctsi", VX (4, 757), VX_MASK, PPCEFS, 0, {RS, RB}}, 2344 + {"efdctuf", VX (4, 758), VX_MASK, PPCEFS, 0, {RS, RB}}, 2345 + {"efdctsf", VX (4, 759), VX_MASK, PPCEFS, 0, {RS, RB}}, 2346 + {"efdctuiz", VX (4, 760), VX_MASK, PPCEFS, 0, {RS, RB}}, 2347 + {"ncput", APU(4, 380,0), APU_RT_MASK, PPC405, 0, {RA, FSL}}, 2348 + {"efdctsiz", VX (4, 762), VX_MASK, PPCEFS, 0, {RS, RB}}, 2349 + {"efdtstgt", VX (4, 764), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}}, 2350 + {"efdtstlt", VX (4, 765), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}}, 2351 + {"efdtsteq", VX (4, 766), VX_MASK, PPCEFS, 0, {CRFD, RA, RB}}, 2352 + {"evlddx", VX (4, 768), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2353 + {"vaddsbs", VX (4, 768), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2354 + {"evldd", VX (4, 769), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}}, 2355 + {"evldwx", VX (4, 770), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2356 + {"vminsb", VX (4, 770), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2357 + {"evldw", VX (4, 771), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}}, 2358 + {"evldhx", VX (4, 772), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2359 + {"vsrab", VX (4, 772), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2360 + {"evldh", VX (4, 773), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}}, 2361 + {"vcmpgtsb", VXR(4, 774,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2362 + {"evlhhesplatx",VX (4, 776), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2363 + {"vmulesb", VX (4, 776), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2364 + {"evlhhesplat", VX (4, 777), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}}, 2365 + {"vcfux", VX (4, 778), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}}, 2366 + {"vcuxwfp", VX (4, 778), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}}, 2367 + {"evlhhousplatx",VX(4, 780), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2368 + {"vspltisb", VX (4, 780), VXVB_MASK, PPCVEC, 0, {VD, SIMM}}, 2369 + {"vinsertb", VX (4, 781), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}}, 2370 + {"evlhhousplat",VX (4, 781), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}}, 2371 + {"evlhhossplatx",VX(4, 782), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2372 + {"vpkpx", VX (4, 782), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2373 + {"evlhhossplat",VX (4, 783), VX_MASK, PPCSPE, 0, {RS, EVUIMM_2, RA}}, 2374 + {"mullhwu", XRC(4, 392,0), X_MASK, MULHW, 0, {RT, RA, RB}}, 2375 + {"evlwhex", VX (4, 784), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2376 + {"mullhwu.", XRC(4, 392,1), X_MASK, MULHW, 0, {RT, RA, RB}}, 2377 + {"evlwhe", VX (4, 785), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}}, 2378 + {"evlwhoux", VX (4, 788), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2379 + {"evlwhou", VX (4, 789), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}}, 2380 + {"evlwhosx", VX (4, 790), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2381 + {"evlwhos", VX (4, 791), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}}, 2382 + {"maclhwu", XO (4, 396,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}}, 2383 + {"evlwwsplatx", VX (4, 792), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2384 + {"maclhwu.", XO (4, 396,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}}, 2385 + {"evlwwsplat", VX (4, 793), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}}, 2386 + {"evlwhsplatx", VX (4, 796), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2387 + {"evlwhsplat", VX (4, 797), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}}, 2388 + {"evstddx", VX (4, 800), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2389 + {"evstdd", VX (4, 801), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}}, 2390 + {"evstdwx", VX (4, 802), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2391 + {"evstdw", VX (4, 803), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}}, 2392 + {"evstdhx", VX (4, 804), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2393 + {"evstdh", VX (4, 805), VX_MASK, PPCSPE, 0, {RS, EVUIMM_8, RA}}, 2394 + {"evstwhex", VX (4, 816), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2395 + {"evstwhe", VX (4, 817), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}}, 2396 + {"evstwhox", VX (4, 820), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2397 + {"evstwho", VX (4, 821), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}}, 2398 + {"evstwwex", VX (4, 824), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2399 + {"evstwwe", VX (4, 825), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}}, 2400 + {"evstwwox", VX (4, 828), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2401 + {"evstwwo", VX (4, 829), VX_MASK, PPCSPE, 0, {RS, EVUIMM_4, RA}}, 2402 + {"vaddshs", VX (4, 832), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2403 + {"bcdcpsgn.", VX (4, 833), VX_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2404 + {"vminsh", VX (4, 834), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2405 + {"vsrah", VX (4, 836), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2406 + {"vcmpgtsh", VXR(4, 838,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2407 + {"vmulesh", VX (4, 840), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2408 + {"vcfsx", VX (4, 842), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}}, 2409 + {"vcsxwfp", VX (4, 842), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}}, 2410 + {"vspltish", VX (4, 844), VXVB_MASK, PPCVEC, 0, {VD, SIMM}}, 2411 + {"vinserth", VX (4, 845), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}}, 2412 + {"vupkhpx", VX (4, 846), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2413 + {"mullhw", XRC(4, 424,0), X_MASK, MULHW, 0, {RT, RA, RB}}, 2414 + {"mullhw.", XRC(4, 424,1), X_MASK, MULHW, 0, {RT, RA, RB}}, 2415 + {"maclhw", XO (4, 428,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}}, 2416 + {"maclhw.", XO (4, 428,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}}, 2417 + {"nmaclhw", XO (4, 430,0,0),XO_MASK, MULHW, 0, {RT, RA, RB}}, 2418 + {"nmaclhw.", XO (4, 430,0,1),XO_MASK, MULHW, 0, {RT, RA, RB}}, 2419 + {"vaddsws", VX (4, 896), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2420 + {"vminsw", VX (4, 898), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2421 + {"vsraw", VX (4, 900), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2422 + {"vcmpgtsw", VXR(4, 902,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2423 + {"vmulesw", VX (4, 904), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2424 + {"vctuxs", VX (4, 906), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}}, 2425 + {"vcfpuxws", VX (4, 906), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}}, 2426 + {"vspltisw", VX (4, 908), VXVB_MASK, PPCVEC, 0, {VD, SIMM}}, 2427 + {"vinsertw", VX (4, 909), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}}, 2428 + {"maclhwsu", XO (4, 460,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2429 + {"maclhwsu.", XO (4, 460,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2430 + {"vminsd", VX (4, 962), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2431 + {"vsrad", VX (4, 964), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2432 + {"vcmpbfp", VXR(4, 966,0), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2433 + {"vcmpgtsd", VXR(4, 967,0), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2434 + {"vctsxs", VX (4, 970), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}}, 2435 + {"vcfpsxws", VX (4, 970), VX_MASK, PPCVEC, 0, {VD, VB, UIMM}}, 2436 + {"vinsertd", VX (4, 973), VXUIMM4_MASK, PPCVEC3, 0, {VD, VB, UIMM4}}, 2437 + {"vupklpx", VX (4, 974), VXVA_MASK, PPCVEC, 0, {VD, VB}}, 2438 + {"maclhws", XO (4, 492,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2439 + {"maclhws.", XO (4, 492,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2440 + {"nmaclhws", XO (4, 494,0,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2441 + {"nmaclhws.", XO (4, 494,0,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2442 + {"vsububm", VX (4,1024), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2443 + {"bcdadd.", VX (4,1025), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}}, 2444 + {"vavgub", VX (4,1026), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2445 + {"vabsdub", VX (4,1027), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2446 + {"evmhessf", VX (4,1027), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2447 + {"vand", VX (4,1028), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2448 + {"vcmpequb.", VXR(4, 6,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2449 + {"vcmpneb.", VXR(4, 7,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2450 + {"udi0fcm.", APU(4, 515,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2451 + {"udi0fcm", APU(4, 515,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2452 + {"evmhossf", VX (4,1031), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2453 + {"vpmsumb", VX (4,1032), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2454 + {"evmheumi", VX (4,1032), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2455 + {"evmhesmi", VX (4,1033), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2456 + {"vmaxfp", VX (4,1034), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2457 + {"evmhesmf", VX (4,1035), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2458 + {"evmhoumi", VX (4,1036), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2459 + {"vslo", VX (4,1036), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2460 + {"evmhosmi", VX (4,1037), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2461 + {"evmhosmf", VX (4,1039), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2462 + {"machhwuo", XO (4, 12,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2463 + {"machhwuo.", XO (4, 12,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2464 + {"ps_merge00", XOPS(4,528,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2465 + {"ps_merge00.", XOPS(4,528,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2466 + {"evmhessfa", VX (4,1059), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2467 + {"evmhossfa", VX (4,1063), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2468 + {"evmheumia", VX (4,1064), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2469 + {"evmhesmia", VX (4,1065), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2470 + {"evmhesmfa", VX (4,1067), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2471 + {"evmhoumia", VX (4,1068), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2472 + {"evmhosmia", VX (4,1069), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2473 + {"evmhosmfa", VX (4,1071), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2474 + {"vsubuhm", VX (4,1088), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2475 + {"bcdsub.", VX (4,1089), VXPS_MASK, PPCVEC2, 0, {VD, VA, VB, PS}}, 2476 + {"vavguh", VX (4,1090), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2477 + {"vabsduh", VX (4,1091), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2478 + {"vandc", VX (4,1092), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2479 + {"vcmpequh.", VXR(4, 70,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2480 + {"udi1fcm.", APU(4, 547,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2481 + {"udi1fcm", APU(4, 547,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2482 + {"vcmpneh.", VXR(4, 71,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2483 + {"evmwhssf", VX (4,1095), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2484 + {"vpmsumh", VX (4,1096), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2485 + {"evmwlumi", VX (4,1096), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2486 + {"vminfp", VX (4,1098), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2487 + {"evmwhumi", VX (4,1100), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2488 + {"vsro", VX (4,1100), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2489 + {"evmwhsmi", VX (4,1101), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2490 + {"vpkudum", VX (4,1102), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2491 + {"evmwhsmf", VX (4,1103), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2492 + {"evmwssf", VX (4,1107), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2493 + {"machhwo", XO (4, 44,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2494 + {"evmwumi", VX (4,1112), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2495 + {"machhwo.", XO (4, 44,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2496 + {"evmwsmi", VX (4,1113), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2497 + {"evmwsmf", VX (4,1115), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2498 + {"nmachhwo", XO (4, 46,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2499 + {"nmachhwo.", XO (4, 46,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2500 + {"ps_merge01", XOPS(4,560,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2501 + {"ps_merge01.", XOPS(4,560,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2502 + {"evmwhssfa", VX (4,1127), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2503 + {"evmwlumia", VX (4,1128), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2504 + {"evmwhumia", VX (4,1132), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2505 + {"evmwhsmia", VX (4,1133), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2506 + {"evmwhsmfa", VX (4,1135), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2507 + {"evmwssfa", VX (4,1139), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2508 + {"evmwumia", VX (4,1144), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2509 + {"evmwsmia", VX (4,1145), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2510 + {"evmwsmfa", VX (4,1147), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2511 + {"vsubuwm", VX (4,1152), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2512 + {"bcdus.", VX (4,1153), VX_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2513 + {"vavguw", VX (4,1154), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2514 + {"vabsduw", VX (4,1155), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2515 + {"vmr", VX (4,1156), VX_MASK, PPCVEC, 0, {VD, VA, VBA}}, 2516 + {"vor", VX (4,1156), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2517 + {"vcmpnew.", VXR(4, 135,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2518 + {"vpmsumw", VX (4,1160), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2519 + {"vcmpequw.", VXR(4, 134,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2520 + {"udi2fcm.", APU(4, 579,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2521 + {"udi2fcm", APU(4, 579,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2522 + {"machhwsuo", XO (4, 76,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2523 + {"machhwsuo.", XO (4, 76,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2524 + {"ps_merge10", XOPS(4,592,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2525 + {"ps_merge10.", XOPS(4,592,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2526 + {"vsubudm", VX (4,1216), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2527 + {"evaddusiaaw", VX (4,1216), VX_MASK, PPCSPE, 0, {RS, RA}}, 2528 + {"bcds.", VX (4,1217), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}}, 2529 + {"evaddssiaaw", VX (4,1217), VX_MASK, PPCSPE, 0, {RS, RA}}, 2530 + {"evsubfusiaaw",VX (4,1218), VX_MASK, PPCSPE, 0, {RS, RA}}, 2531 + {"evsubfssiaaw",VX (4,1219), VX_MASK, PPCSPE, 0, {RS, RA}}, 2532 + {"evmra", VX (4,1220), VX_MASK, PPCSPE, 0, {RS, RA}}, 2533 + {"vxor", VX (4,1220), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2534 + {"evdivws", VX (4,1222), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2535 + {"vcmpeqfp.", VXR(4, 198,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2536 + {"udi3fcm.", APU(4, 611,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2537 + {"vcmpequd.", VXR(4, 199,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2538 + {"udi3fcm", APU(4, 611,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2539 + {"evdivwu", VX (4,1223), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2540 + {"vpmsumd", VX (4,1224), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2541 + {"evaddumiaaw", VX (4,1224), VX_MASK, PPCSPE, 0, {RS, RA}}, 2542 + {"evaddsmiaaw", VX (4,1225), VX_MASK, PPCSPE, 0, {RS, RA}}, 2543 + {"evsubfumiaaw",VX (4,1226), VX_MASK, PPCSPE, 0, {RS, RA}}, 2544 + {"evsubfsmiaaw",VX (4,1227), VX_MASK, PPCSPE, 0, {RS, RA}}, 2545 + {"vpkudus", VX (4,1230), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2546 + {"machhwso", XO (4, 108,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2547 + {"machhwso.", XO (4, 108,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2548 + {"nmachhwso", XO (4, 110,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2549 + {"nmachhwso.", XO (4, 110,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2550 + {"ps_merge11", XOPS(4,624,0), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2551 + {"ps_merge11.", XOPS(4,624,1), XOPS_MASK, PPCPS, 0, {FRT, FRA, FRB}}, 2552 + {"vsubuqm", VX (4,1280), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2553 + {"evmheusiaaw", VX (4,1280), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2554 + {"bcdtrunc.", VX (4,1281), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}}, 2555 + {"evmhessiaaw", VX (4,1281), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2556 + {"vavgsb", VX (4,1282), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2557 + {"evmhessfaaw", VX (4,1283), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2558 + {"evmhousiaaw", VX (4,1284), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2559 + {"vnot", VX (4,1284), VX_MASK, PPCVEC, 0, {VD, VA, VBA}}, 2560 + {"vnor", VX (4,1284), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2561 + {"evmhossiaaw", VX (4,1285), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2562 + {"udi4fcm.", APU(4, 643,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2563 + {"udi4fcm", APU(4, 643,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2564 + {"vcmpnezb.", VXR(4, 263,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2565 + {"evmhossfaaw", VX (4,1287), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2566 + {"evmheumiaaw", VX (4,1288), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2567 + {"vcipher", VX (4,1288), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2568 + {"vcipherlast", VX (4,1289), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2569 + {"evmhesmiaaw", VX (4,1289), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2570 + {"evmhesmfaaw", VX (4,1291), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2571 + {"vgbbd", VX (4,1292), VXVA_MASK, PPCVEC2, 0, {VD, VB}}, 2572 + {"evmhoumiaaw", VX (4,1292), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2573 + {"evmhosmiaaw", VX (4,1293), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2574 + {"evmhosmfaaw", VX (4,1295), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2575 + {"macchwuo", XO (4, 140,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2576 + {"macchwuo.", XO (4, 140,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2577 + {"evmhegumiaa", VX (4,1320), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2578 + {"evmhegsmiaa", VX (4,1321), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2579 + {"evmhegsmfaa", VX (4,1323), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2580 + {"evmhogumiaa", VX (4,1324), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2581 + {"evmhogsmiaa", VX (4,1325), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2582 + {"evmhogsmfaa", VX (4,1327), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2583 + {"vsubcuq", VX (4,1344), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2584 + {"evmwlusiaaw", VX (4,1344), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2585 + {"bcdutrunc.", VX (4,1345), VX_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2586 + {"evmwlssiaaw", VX (4,1345), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2587 + {"vavgsh", VX (4,1346), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2588 + {"vorc", VX (4,1348), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2589 + {"udi5fcm.", APU(4, 675,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2590 + {"udi5fcm", APU(4, 675,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2591 + {"vcmpnezh.", VXR(4, 327,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2592 + {"vncipher", VX (4,1352), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2593 + {"evmwlumiaaw", VX (4,1352), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2594 + {"vncipherlast",VX (4,1353), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2595 + {"evmwlsmiaaw", VX (4,1353), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2596 + {"vbpermq", VX (4,1356), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2597 + {"vpksdus", VX (4,1358), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2598 + {"evmwssfaa", VX (4,1363), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2599 + {"macchwo", XO (4, 172,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2600 + {"evmwumiaa", VX (4,1368), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2601 + {"macchwo.", XO (4, 172,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2602 + {"evmwsmiaa", VX (4,1369), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2603 + {"evmwsmfaa", VX (4,1371), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2604 + {"nmacchwo", XO (4, 174,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2605 + {"nmacchwo.", XO (4, 174,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2606 + {"evmheusianw", VX (4,1408), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2607 + {"vsubcuw", VX (4,1408), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2608 + {"evmhessianw", VX (4,1409), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2609 + {"bcdctsq.", VXVA(4,1409,0), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2610 + {"bcdcfsq.", VXVA(4,1409,2), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}}, 2611 + {"bcdctz.", VXVA(4,1409,4), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}}, 2612 + {"bcdctn.", VXVA(4,1409,5), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2613 + {"bcdcfz.", VXVA(4,1409,6), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}}, 2614 + {"bcdcfn.", VXVA(4,1409,7), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}}, 2615 + {"bcdsetsgn.", VXVA(4,1409,31), VXVAPS_MASK, PPCVEC3, 0, {VD, VB, PS}}, 2616 + {"vavgsw", VX (4,1410), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2617 + {"evmhessfanw", VX (4,1411), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2618 + {"vnand", VX (4,1412), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2619 + {"evmhousianw", VX (4,1412), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2620 + {"evmhossianw", VX (4,1413), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2621 + {"udi6fcm.", APU(4, 707,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2622 + {"udi6fcm", APU(4, 707,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2623 + {"vcmpnezw.", VXR(4, 391,1), VXR_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2624 + {"evmhossfanw", VX (4,1415), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2625 + {"evmheumianw", VX (4,1416), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2626 + {"evmhesmianw", VX (4,1417), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2627 + {"evmhesmfanw", VX (4,1419), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2628 + {"evmhoumianw", VX (4,1420), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2629 + {"evmhosmianw", VX (4,1421), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2630 + {"evmhosmfanw", VX (4,1423), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2631 + {"macchwsuo", XO (4, 204,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2632 + {"macchwsuo.", XO (4, 204,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2633 + {"evmhegumian", VX (4,1448), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2634 + {"evmhegsmian", VX (4,1449), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2635 + {"evmhegsmfan", VX (4,1451), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2636 + {"evmhogumian", VX (4,1452), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2637 + {"evmhogsmian", VX (4,1453), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2638 + {"evmhogsmfan", VX (4,1455), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2639 + {"evmwlusianw", VX (4,1472), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2640 + {"bcdsr.", VX (4,1473), VXPS_MASK, PPCVEC3, 0, {VD, VA, VB, PS}}, 2641 + {"evmwlssianw", VX (4,1473), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2642 + {"vsld", VX (4,1476), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2643 + {"vcmpgefp.", VXR(4, 454,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2644 + {"udi7fcm.", APU(4, 739,0), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2645 + {"udi7fcm", APU(4, 739,1), APU_MASK, PPC405|PPC440, PPC476, {URT, URA, URB}}, 2646 + {"vsbox", VX (4,1480), VXVB_MASK, PPCVEC2, 0, {VD, VA}}, 2647 + {"evmwlumianw", VX (4,1480), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2648 + {"evmwlsmianw", VX (4,1481), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2649 + {"vbpermd", VX (4,1484), VX_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2650 + {"vpksdss", VX (4,1486), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2651 + {"evmwssfan", VX (4,1491), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2652 + {"macchwso", XO (4, 236,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2653 + {"evmwumian", VX (4,1496), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2654 + {"macchwso.", XO (4, 236,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2655 + {"evmwsmian", VX (4,1497), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2656 + {"evmwsmfan", VX (4,1499), VX_MASK, PPCSPE, 0, {RS, RA, RB}}, 2657 + {"nmacchwso", XO (4, 238,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2658 + {"nmacchwso.", XO (4, 238,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2659 + {"vsububs", VX (4,1536), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2660 + {"vclzlsbb", VXVA(4,1538,0), VXVA_MASK, PPCVEC3, 0, {RT, VB}}, 2661 + {"vctzlsbb", VXVA(4,1538,1), VXVA_MASK, PPCVEC3, 0, {RT, VB}}, 2662 + {"vnegw", VXVA(4,1538,6), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2663 + {"vnegd", VXVA(4,1538,7), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2664 + {"vprtybw", VXVA(4,1538,8), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2665 + {"vprtybd", VXVA(4,1538,9), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2666 + {"vprtybq", VXVA(4,1538,10), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2667 + {"vextsb2w", VXVA(4,1538,16), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2668 + {"vextsh2w", VXVA(4,1538,17), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2669 + {"vextsb2d", VXVA(4,1538,24), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2670 + {"vextsh2d", VXVA(4,1538,25), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2671 + {"vextsw2d", VXVA(4,1538,26), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2672 + {"vctzb", VXVA(4,1538,28), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2673 + {"vctzh", VXVA(4,1538,29), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2674 + {"vctzw", VXVA(4,1538,30), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2675 + {"vctzd", VXVA(4,1538,31), VXVA_MASK, PPCVEC3, 0, {VD, VB}}, 2676 + {"mfvscr", VX (4,1540), VXVAVB_MASK, PPCVEC, 0, {VD}}, 2677 + {"vcmpgtub.", VXR(4, 518,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2678 + {"udi8fcm.", APU(4, 771,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2679 + {"udi8fcm", APU(4, 771,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2680 + {"vsum4ubs", VX (4,1544), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2681 + {"vextublx", VX (4,1549), VX_MASK, PPCVEC3, 0, {RT, RA, VB}}, 2682 + {"vsubuhs", VX (4,1600), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2683 + {"mtvscr", VX (4,1604), VXVDVA_MASK, PPCVEC, 0, {VB}}, 2684 + {"vcmpgtuh.", VXR(4, 582,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2685 + {"vsum4shs", VX (4,1608), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2686 + {"udi9fcm.", APU(4, 804,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2687 + {"udi9fcm", APU(4, 804,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2688 + {"vextuhlx", VX (4,1613), VX_MASK, PPCVEC3, 0, {RT, RA, VB}}, 2689 + {"vupkhsw", VX (4,1614), VXVA_MASK, PPCVEC2, 0, {VD, VB}}, 2690 + {"vsubuws", VX (4,1664), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2691 + {"vshasigmaw", VX (4,1666), VX_MASK, PPCVEC2, 0, {VD, VA, ST, SIX}}, 2692 + {"veqv", VX (4,1668), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2693 + {"vcmpgtuw.", VXR(4, 646,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2694 + {"udi10fcm.", APU(4, 835,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2695 + {"udi10fcm", APU(4, 835,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2696 + {"vsum2sws", VX (4,1672), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2697 + {"vmrgow", VX (4,1676), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2698 + {"vextuwlx", VX (4,1677), VX_MASK, PPCVEC3, 0, {RT, RA, VB}}, 2699 + {"vshasigmad", VX (4,1730), VX_MASK, PPCVEC2, 0, {VD, VA, ST, SIX}}, 2700 + {"vsrd", VX (4,1732), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2701 + {"vcmpgtfp.", VXR(4, 710,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2702 + {"udi11fcm.", APU(4, 867,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2703 + {"vcmpgtud.", VXR(4, 711,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2704 + {"udi11fcm", APU(4, 867,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2705 + {"vupklsw", VX (4,1742), VXVA_MASK, PPCVEC2, 0, {VD, VB}}, 2706 + {"vsubsbs", VX (4,1792), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2707 + {"vclzb", VX (4,1794), VXVA_MASK, PPCVEC2, 0, {VD, VB}}, 2708 + {"vpopcntb", VX (4,1795), VXVA_MASK, PPCVEC2, 0, {VD, VB}}, 2709 + {"vsrv", VX (4,1796), VX_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2710 + {"vcmpgtsb.", VXR(4, 774,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2711 + {"udi12fcm.", APU(4, 899,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2712 + {"udi12fcm", APU(4, 899,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2713 + {"vsum4sbs", VX (4,1800), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2714 + {"vextubrx", VX (4,1805), VX_MASK, PPCVEC3, 0, {RT, RA, VB}}, 2715 + {"maclhwuo", XO (4, 396,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2716 + {"maclhwuo.", XO (4, 396,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2717 + {"vsubshs", VX (4,1856), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2718 + {"vclzh", VX (4,1858), VXVA_MASK, PPCVEC2, 0, {VD, VB}}, 2719 + {"vpopcnth", VX (4,1859), VXVA_MASK, PPCVEC2, 0, {VD, VB}}, 2720 + {"vslv", VX (4,1860), VX_MASK, PPCVEC3, 0, {VD, VA, VB}}, 2721 + {"vcmpgtsh.", VXR(4, 838,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2722 + {"vextuhrx", VX (4,1869), VX_MASK, PPCVEC3, 0, {RT, RA, VB}}, 2723 + {"udi13fcm.", APU(4, 931,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2724 + {"udi13fcm", APU(4, 931,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2725 + {"maclhwo", XO (4, 428,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2726 + {"maclhwo.", XO (4, 428,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2727 + {"nmaclhwo", XO (4, 430,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2728 + {"nmaclhwo.", XO (4, 430,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2729 + {"vsubsws", VX (4,1920), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2730 + {"vclzw", VX (4,1922), VXVA_MASK, PPCVEC2, 0, {VD, VB}}, 2731 + {"vpopcntw", VX (4,1923), VXVA_MASK, PPCVEC2, 0, {VD, VB}}, 2732 + {"vcmpgtsw.", VXR(4, 902,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2733 + {"udi14fcm.", APU(4, 963,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2734 + {"udi14fcm", APU(4, 963,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2735 + {"vsumsws", VX (4,1928), VX_MASK, PPCVEC, 0, {VD, VA, VB}}, 2736 + {"vmrgew", VX (4,1932), VX_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2737 + {"vextuwrx", VX (4,1933), VX_MASK, PPCVEC3, 0, {RT, RA, VB}}, 2738 + {"maclhwsuo", XO (4, 460,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2739 + {"maclhwsuo.", XO (4, 460,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2740 + {"vclzd", VX (4,1986), VXVA_MASK, PPCVEC2, 0, {VD, VB}}, 2741 + {"vpopcntd", VX (4,1987), VXVA_MASK, PPCVEC2, 0, {VD, VB}}, 2742 + {"vcmpbfp.", VXR(4, 966,1), VXR_MASK, PPCVEC, 0, {VD, VA, VB}}, 2743 + {"udi15fcm.", APU(4, 995,0), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2744 + {"vcmpgtsd.", VXR(4, 967,1), VXR_MASK, PPCVEC2, 0, {VD, VA, VB}}, 2745 + {"udi15fcm", APU(4, 995,1), APU_MASK, PPC440, PPC476, {URT, URA, URB}}, 2746 + {"maclhwso", XO (4, 492,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2747 + {"maclhwso.", XO (4, 492,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2748 + {"nmaclhwso", XO (4, 494,1,0), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2749 + {"nmaclhwso.", XO (4, 494,1,1), XO_MASK, MULHW, 0, {RT, RA, RB}}, 2750 + {"dcbz_l", X (4,1014), XRT_MASK, PPCPS, 0, {RA, RB}}, 2751 + 2752 + {"mulli", OP(7), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}}, 2753 + {"muli", OP(7), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}}, 2754 + 2755 + {"subfic", OP(8), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}}, 2756 + {"sfi", OP(8), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}}, 2757 + 2758 + {"dozi", OP(9), OP_MASK, M601, PPCVLE, {RT, RA, SI}}, 2759 + 2760 + {"cmplwi", OPL(10,0), OPL_MASK, PPCCOM, PPCVLE, {OBF, RA, UISIGNOPT}}, 2761 + {"cmpldi", OPL(10,1), OPL_MASK, PPC64, PPCVLE, {OBF, RA, UISIGNOPT}}, 2762 + {"cmpli", OP(10), OP_MASK, PPC, PPCVLE, {BF, L32OPT, RA, UISIGNOPT}}, 2763 + {"cmpli", OP(10), OP_MASK, PWRCOM, PPC|PPCVLE, {BF, RA, UISIGNOPT}}, 2764 + 2765 + {"cmpwi", OPL(11,0), OPL_MASK, PPCCOM, PPCVLE, {OBF, RA, SI}}, 2766 + {"cmpdi", OPL(11,1), OPL_MASK, PPC64, PPCVLE, {OBF, RA, SI}}, 2767 + {"cmpi", OP(11), OP_MASK, PPC, PPCVLE, {BF, L32OPT, RA, SI}}, 2768 + {"cmpi", OP(11), OP_MASK, PWRCOM, PPC|PPCVLE, {BF, RA, SI}}, 2769 + 2770 + {"addic", OP(12), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}}, 2771 + {"ai", OP(12), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}}, 2772 + {"subic", OP(12), OP_MASK, PPCCOM, PPCVLE, {RT, RA, NSI}}, 2773 + 2774 + {"addic.", OP(13), OP_MASK, PPCCOM, PPCVLE, {RT, RA, SI}}, 2775 + {"ai.", OP(13), OP_MASK, PWRCOM, PPCVLE, {RT, RA, SI}}, 2776 + {"subic.", OP(13), OP_MASK, PPCCOM, PPCVLE, {RT, RA, NSI}}, 2777 + 2778 + {"li", OP(14), DRA_MASK, PPCCOM, PPCVLE, {RT, SI}}, 2779 + {"lil", OP(14), DRA_MASK, PWRCOM, PPCVLE, {RT, SI}}, 2780 + {"addi", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, SI}}, 2781 + {"cal", OP(14), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}}, 2782 + {"subi", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, NSI}}, 2783 + {"la", OP(14), OP_MASK, PPCCOM, PPCVLE, {RT, D, RA0}}, 2784 + 2785 + {"lis", OP(15), DRA_MASK, PPCCOM, PPCVLE, {RT, SISIGNOPT}}, 2786 + {"liu", OP(15), DRA_MASK, PWRCOM, PPCVLE, {RT, SISIGNOPT}}, 2787 + {"addis", OP(15), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, SISIGNOPT}}, 2788 + {"cau", OP(15), OP_MASK, PWRCOM, PPCVLE, {RT, RA0, SISIGNOPT}}, 2789 + {"subis", OP(15), OP_MASK, PPCCOM, PPCVLE, {RT, RA0, NSISIGNOPT}}, 2790 + 2791 + {"bdnz-", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}}, 2792 + {"bdnz+", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}}, 2793 + {"bdnz", BBO(16,BODNZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BD}}, 2794 + {"bdn", BBO(16,BODNZ,0,0), BBOATBI_MASK, PWRCOM, PPCVLE, {BD}}, 2795 + {"bdnzl-", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}}, 2796 + {"bdnzl+", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}}, 2797 + {"bdnzl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BD}}, 2798 + {"bdnl", BBO(16,BODNZ,0,1), BBOATBI_MASK, PWRCOM, PPCVLE, {BD}}, 2799 + {"bdnza-", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}}, 2800 + {"bdnza+", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}}, 2801 + {"bdnza", BBO(16,BODNZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDA}}, 2802 + {"bdna", BBO(16,BODNZ,1,0), BBOATBI_MASK, PWRCOM, PPCVLE, {BDA}}, 2803 + {"bdnzla-", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}}, 2804 + {"bdnzla+", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}}, 2805 + {"bdnzla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDA}}, 2806 + {"bdnla", BBO(16,BODNZ,1,1), BBOATBI_MASK, PWRCOM, PPCVLE, {BDA}}, 2807 + {"bdz-", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}}, 2808 + {"bdz+", BBO(16,BODZ,0,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}}, 2809 + {"bdz", BBO(16,BODZ,0,0), BBOATBI_MASK, COM, PPCVLE, {BD}}, 2810 + {"bdzl-", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDM}}, 2811 + {"bdzl+", BBO(16,BODZ,0,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDP}}, 2812 + {"bdzl", BBO(16,BODZ,0,1), BBOATBI_MASK, COM, PPCVLE, {BD}}, 2813 + {"bdza-", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}}, 2814 + {"bdza+", BBO(16,BODZ,1,0), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}}, 2815 + {"bdza", BBO(16,BODZ,1,0), BBOATBI_MASK, COM, PPCVLE, {BDA}}, 2816 + {"bdzla-", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDMA}}, 2817 + {"bdzla+", BBO(16,BODZ,1,1), BBOATBI_MASK, PPCCOM, PPCVLE, {BDPA}}, 2818 + {"bdzla", BBO(16,BODZ,1,1), BBOATBI_MASK, COM, PPCVLE, {BDA}}, 2819 + 2820 + {"bge-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2821 + {"bge+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2822 + {"bge", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2823 + {"bnl-", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2824 + {"bnl+", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2825 + {"bnl", BBOCB(16,BOF,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2826 + {"bgel-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2827 + {"bgel+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2828 + {"bgel", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2829 + {"bnll-", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2830 + {"bnll+", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2831 + {"bnll", BBOCB(16,BOF,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2832 + {"bgea-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2833 + {"bgea+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2834 + {"bgea", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2835 + {"bnla-", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2836 + {"bnla+", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2837 + {"bnla", BBOCB(16,BOF,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2838 + {"bgela-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2839 + {"bgela+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2840 + {"bgela", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2841 + {"bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2842 + {"bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2843 + {"bnlla", BBOCB(16,BOF,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2844 + {"ble-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2845 + {"ble+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2846 + {"ble", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2847 + {"bng-", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2848 + {"bng+", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2849 + {"bng", BBOCB(16,BOF,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2850 + {"blel-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2851 + {"blel+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2852 + {"blel", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2853 + {"bngl-", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2854 + {"bngl+", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2855 + {"bngl", BBOCB(16,BOF,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2856 + {"blea-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2857 + {"blea+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2858 + {"blea", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2859 + {"bnga-", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2860 + {"bnga+", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2861 + {"bnga", BBOCB(16,BOF,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2862 + {"blela-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2863 + {"blela+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2864 + {"blela", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2865 + {"bngla-", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2866 + {"bngla+", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2867 + {"bngla", BBOCB(16,BOF,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2868 + {"bne-", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2869 + {"bne+", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2870 + {"bne", BBOCB(16,BOF,CBEQ,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2871 + {"bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2872 + {"bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2873 + {"bnel", BBOCB(16,BOF,CBEQ,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2874 + {"bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2875 + {"bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2876 + {"bnea", BBOCB(16,BOF,CBEQ,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2877 + {"bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2878 + {"bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2879 + {"bnela", BBOCB(16,BOF,CBEQ,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2880 + {"bns-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2881 + {"bns+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2882 + {"bns", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2883 + {"bnu-", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2884 + {"bnu+", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2885 + {"bnu", BBOCB(16,BOF,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}}, 2886 + {"bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2887 + {"bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2888 + {"bnsl", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2889 + {"bnul-", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2890 + {"bnul+", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2891 + {"bnul", BBOCB(16,BOF,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}}, 2892 + {"bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2893 + {"bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2894 + {"bnsa", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2895 + {"bnua-", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2896 + {"bnua+", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2897 + {"bnua", BBOCB(16,BOF,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}}, 2898 + {"bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2899 + {"bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2900 + {"bnsla", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2901 + {"bnula-", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2902 + {"bnula+", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2903 + {"bnula", BBOCB(16,BOF,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}}, 2904 + 2905 + {"blt-", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2906 + {"blt+", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2907 + {"blt", BBOCB(16,BOT,CBLT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2908 + {"bltl-", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2909 + {"bltl+", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2910 + {"bltl", BBOCB(16,BOT,CBLT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2911 + {"blta-", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2912 + {"blta+", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2913 + {"blta", BBOCB(16,BOT,CBLT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2914 + {"bltla-", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2915 + {"bltla+", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2916 + {"bltla", BBOCB(16,BOT,CBLT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2917 + {"bgt-", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2918 + {"bgt+", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2919 + {"bgt", BBOCB(16,BOT,CBGT,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2920 + {"bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2921 + {"bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2922 + {"bgtl", BBOCB(16,BOT,CBGT,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2923 + {"bgta-", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2924 + {"bgta+", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2925 + {"bgta", BBOCB(16,BOT,CBGT,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2926 + {"bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2927 + {"bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2928 + {"bgtla", BBOCB(16,BOT,CBGT,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2929 + {"beq-", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2930 + {"beq+", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2931 + {"beq", BBOCB(16,BOT,CBEQ,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2932 + {"beql-", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2933 + {"beql+", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2934 + {"beql", BBOCB(16,BOT,CBEQ,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2935 + {"beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2936 + {"beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2937 + {"beqa", BBOCB(16,BOT,CBEQ,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2938 + {"beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2939 + {"beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2940 + {"beqla", BBOCB(16,BOT,CBEQ,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2941 + {"bso-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2942 + {"bso+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2943 + {"bso", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2944 + {"bun-", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2945 + {"bun+", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2946 + {"bun", BBOCB(16,BOT,CBSO,0,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}}, 2947 + {"bsol-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2948 + {"bsol+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2949 + {"bsol", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, COM, PPCVLE, {CR, BD}}, 2950 + {"bunl-", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDM}}, 2951 + {"bunl+", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDP}}, 2952 + {"bunl", BBOCB(16,BOT,CBSO,0,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BD}}, 2953 + {"bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2954 + {"bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2955 + {"bsoa", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2956 + {"buna-", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2957 + {"buna+", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2958 + {"buna", BBOCB(16,BOT,CBSO,1,0), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}}, 2959 + {"bsola-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2960 + {"bsola+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2961 + {"bsola", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, COM, PPCVLE, {CR, BDA}}, 2962 + {"bunla-", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDMA}}, 2963 + {"bunla+", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDPA}}, 2964 + {"bunla", BBOCB(16,BOT,CBSO,1,1), BBOATCB_MASK, PPCCOM, PPCVLE, {CR, BDA}}, 2965 + 2966 + {"bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}}, 2967 + {"bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}}, 2968 + {"bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}}, 2969 + {"bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}}, 2970 + {"bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}}, 2971 + {"bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}}, 2972 + {"bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}}, 2973 + {"bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}}, 2974 + {"bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}}, 2975 + {"bdnzfla-", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}}, 2976 + {"bdnzfla+", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}}, 2977 + {"bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}}, 2978 + {"bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}}, 2979 + {"bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}}, 2980 + {"bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}}, 2981 + {"bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}}, 2982 + {"bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}}, 2983 + {"bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}}, 2984 + {"bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}}, 2985 + {"bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}}, 2986 + {"bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}}, 2987 + {"bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}}, 2988 + {"bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}}, 2989 + {"bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}}, 2990 + 2991 + {"bf-", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}}, 2992 + {"bf+", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}}, 2993 + {"bf", BBO(16,BOF,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}}, 2994 + {"bbf", BBO(16,BOF,0,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}}, 2995 + {"bfl-", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}}, 2996 + {"bfl+", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}}, 2997 + {"bfl", BBO(16,BOF,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}}, 2998 + {"bbfl", BBO(16,BOF,0,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}}, 2999 + {"bfa-", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}}, 3000 + {"bfa+", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}}, 3001 + {"bfa", BBO(16,BOF,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}}, 3002 + {"bbfa", BBO(16,BOF,1,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}}, 3003 + {"bfla-", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}}, 3004 + {"bfla+", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}}, 3005 + {"bfla", BBO(16,BOF,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}}, 3006 + {"bbfla", BBO(16,BOF,1,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}}, 3007 + 3008 + {"bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}}, 3009 + {"bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}}, 3010 + {"bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}}, 3011 + {"bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}}, 3012 + {"bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}}, 3013 + {"bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}}, 3014 + {"bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}}, 3015 + {"bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}}, 3016 + {"bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}}, 3017 + {"bdnztla-", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}}, 3018 + {"bdnztla+", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}}, 3019 + {"bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}}, 3020 + {"bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}}, 3021 + {"bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}}, 3022 + {"bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}}, 3023 + {"bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDM}}, 3024 + {"bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDP}}, 3025 + {"bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BD}}, 3026 + {"bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}}, 3027 + {"bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}}, 3028 + {"bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}}, 3029 + {"bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDMA}}, 3030 + {"bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, ISA_V2|PPCVLE, {BI, BDPA}}, 3031 + {"bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, PPCVLE, {BI, BDA}}, 3032 + 3033 + {"bt-", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}}, 3034 + {"bt+", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}}, 3035 + {"bt", BBO(16,BOT,0,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}}, 3036 + {"bbt", BBO(16,BOT,0,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}}, 3037 + {"btl-", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDM}}, 3038 + {"btl+", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDP}}, 3039 + {"btl", BBO(16,BOT,0,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BD}}, 3040 + {"bbtl", BBO(16,BOT,0,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BD}}, 3041 + {"bta-", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}}, 3042 + {"bta+", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}}, 3043 + {"bta", BBO(16,BOT,1,0), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}}, 3044 + {"bbta", BBO(16,BOT,1,0), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}}, 3045 + {"btla-", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDMA}}, 3046 + {"btla+", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDPA}}, 3047 + {"btla", BBO(16,BOT,1,1), BBOAT_MASK, PPCCOM, PPCVLE, {BI, BDA}}, 3048 + {"bbtla", BBO(16,BOT,1,1), BBOAT_MASK, PWRCOM, PPCVLE, {BI, BDA}}, 3049 + 3050 + {"bc-", B(16,0,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDM}}, 3051 + {"bc+", B(16,0,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDP}}, 3052 + {"bc", B(16,0,0), B_MASK, COM, PPCVLE, {BO, BI, BD}}, 3053 + {"bcl-", B(16,0,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDM}}, 3054 + {"bcl+", B(16,0,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDP}}, 3055 + {"bcl", B(16,0,1), B_MASK, COM, PPCVLE, {BO, BI, BD}}, 3056 + {"bca-", B(16,1,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDMA}}, 3057 + {"bca+", B(16,1,0), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDPA}}, 3058 + {"bca", B(16,1,0), B_MASK, COM, PPCVLE, {BO, BI, BDA}}, 3059 + {"bcla-", B(16,1,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDMA}}, 3060 + {"bcla+", B(16,1,1), B_MASK, PPCCOM, PPCVLE, {BOE, BI, BDPA}}, 3061 + {"bcla", B(16,1,1), B_MASK, COM, PPCVLE, {BO, BI, BDA}}, 3062 + 3063 + {"svc", SC(17,0,0), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}}, 3064 + {"svcl", SC(17,0,1), SC_MASK, POWER, PPCVLE, {SVC_LEV, FL1, FL2}}, 3065 + {"sc", SC(17,1,0), SC_MASK, PPC, PPCVLE, {LEV}}, 3066 + {"svca", SC(17,1,0), SC_MASK, PWRCOM, PPCVLE, {SV}}, 3067 + {"svcla", SC(17,1,1), SC_MASK, POWER, PPCVLE, {SV}}, 3068 + 3069 + {"b", B(18,0,0), B_MASK, COM, PPCVLE, {LI}}, 3070 + {"bl", B(18,0,1), B_MASK, COM, PPCVLE, {LI}}, 3071 + {"ba", B(18,1,0), B_MASK, COM, PPCVLE, {LIA}}, 3072 + {"bla", B(18,1,1), B_MASK, COM, PPCVLE, {LIA}}, 3073 + 3074 + {"mcrf", XL(19,0), XLBB_MASK|(3<<21)|(3<<16), COM, PPCVLE, {BF, BFA}}, 3075 + 3076 + {"addpcis", DX(19,2), DX_MASK, POWER9, PPCVLE, {RT, DXD}}, 3077 + {"subpcis", DX(19,2), DX_MASK, POWER9, PPCVLE, {RT, NDXD}}, 3078 + 3079 + {"bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}}, 3080 + {"bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}}, 3081 + {"bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}}, 3082 + {"bdnzlrl-", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}}, 3083 + {"bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}}, 3084 + {"bdnzlrl+", XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}}, 3085 + {"bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}}, 3086 + {"bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}}, 3087 + {"bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}}, 3088 + {"bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}}, 3089 + {"bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}}, 3090 + {"bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, PPCCOM, ISA_V2|PPCVLE, {0}}, 3091 + {"blr", XLO(19,BOU,16,0), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}}, 3092 + {"br", XLO(19,BOU,16,0), XLBOBIBB_MASK, PWRCOM, PPCVLE, {0}}, 3093 + {"blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, PPCVLE, {0}}, 3094 + {"brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, PPCVLE, {0}}, 3095 + {"bdnzlr-", XLO(19,BODNZM4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}}, 3096 + {"bdnzlrl-", XLO(19,BODNZM4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}}, 3097 + {"bdnzlr+", XLO(19,BODNZP4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}}, 3098 + {"bdnzlrl+", XLO(19,BODNZP4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}}, 3099 + {"bdzlr-", XLO(19,BODZM4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}}, 3100 + {"bdzlrl-", XLO(19,BODZM4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}}, 3101 + {"bdzlr+", XLO(19,BODZP4,16,0), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}}, 3102 + {"bdzlrl+", XLO(19,BODZP4,16,1), XLBOBIBB_MASK, ISA_V2, PPCVLE, {0}}, 3103 + 3104 + {"bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3105 + {"bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3106 + {"bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3107 + {"bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3108 + {"bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3109 + {"bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3110 + {"bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3111 + {"bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3112 + {"bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3113 + {"bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3114 + {"bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3115 + {"bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3116 + {"blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3117 + {"blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3118 + {"bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3119 + {"bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3120 + {"bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3121 + {"bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3122 + {"blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3123 + {"blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3124 + {"blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3125 + {"bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3126 + {"bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3127 + {"bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3128 + {"bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3129 + {"bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3130 + {"bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3131 + {"bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3132 + {"bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3133 + {"bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3134 + {"bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3135 + {"bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3136 + {"bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3137 + {"bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3138 + {"bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3139 + {"bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3140 + {"bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3141 + {"bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3142 + {"bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3143 + {"bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3144 + {"bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3145 + {"bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3146 + {"bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3147 + {"bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3148 + {"blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3149 + {"bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3150 + {"blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3151 + {"bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3152 + {"bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3153 + {"bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3154 + {"bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3155 + {"bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3156 + {"bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3157 + {"bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3158 + {"bgelr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3159 + {"bnllr-", XLOCB(19,BOFM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3160 + {"bgelrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3161 + {"bnllrl-", XLOCB(19,BOFM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3162 + {"blelr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3163 + {"bnglr-", XLOCB(19,BOFM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3164 + {"blelrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3165 + {"bnglrl-", XLOCB(19,BOFM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3166 + {"bnelr-", XLOCB(19,BOFM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3167 + {"bnelrl-", XLOCB(19,BOFM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3168 + {"bnslr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3169 + {"bnulr-", XLOCB(19,BOFM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3170 + {"bnslrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3171 + {"bnulrl-", XLOCB(19,BOFM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3172 + {"bgelr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3173 + {"bnllr+", XLOCB(19,BOFP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3174 + {"bgelrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3175 + {"bnllrl+", XLOCB(19,BOFP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3176 + {"blelr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3177 + {"bnglr+", XLOCB(19,BOFP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3178 + {"blelrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3179 + {"bnglrl+", XLOCB(19,BOFP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3180 + {"bnelr+", XLOCB(19,BOFP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3181 + {"bnelrl+", XLOCB(19,BOFP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3182 + {"bnslr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3183 + {"bnulr+", XLOCB(19,BOFP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3184 + {"bnslrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3185 + {"bnulrl+", XLOCB(19,BOFP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3186 + {"bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3187 + {"bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3188 + {"bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3189 + {"bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3190 + {"bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3191 + {"bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3192 + {"bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3193 + {"bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3194 + {"bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3195 + {"bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3196 + {"bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3197 + {"bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3198 + {"beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3199 + {"beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3200 + {"beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3201 + {"beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3202 + {"beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3203 + {"beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3204 + {"bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3205 + {"bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3206 + {"bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3207 + {"bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3208 + {"bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3209 + {"bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3210 + {"bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3211 + {"bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, PPCVLE, {CR}}, 3212 + {"bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3213 + {"bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3214 + {"bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3215 + {"bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3216 + {"bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3217 + {"bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3218 + {"beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3219 + {"beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3220 + {"bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3221 + {"bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3222 + {"bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3223 + {"bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3224 + {"bltlr-", XLOCB(19,BOTM4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3225 + {"bltlrl-", XLOCB(19,BOTM4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3226 + {"bgtlr-", XLOCB(19,BOTM4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3227 + {"bgtlrl-", XLOCB(19,BOTM4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3228 + {"beqlr-", XLOCB(19,BOTM4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3229 + {"beqlrl-", XLOCB(19,BOTM4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3230 + {"bsolr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3231 + {"bunlr-", XLOCB(19,BOTM4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3232 + {"bsolrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3233 + {"bunlrl-", XLOCB(19,BOTM4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3234 + {"bltlr+", XLOCB(19,BOTP4,CBLT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3235 + {"bltlrl+", XLOCB(19,BOTP4,CBLT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3236 + {"bgtlr+", XLOCB(19,BOTP4,CBGT,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3237 + {"bgtlrl+", XLOCB(19,BOTP4,CBGT,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3238 + {"beqlr+", XLOCB(19,BOTP4,CBEQ,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3239 + {"beqlrl+", XLOCB(19,BOTP4,CBEQ,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3240 + {"bsolr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3241 + {"bunlr+", XLOCB(19,BOTP4,CBSO,16,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3242 + {"bsolrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3243 + {"bunlrl+", XLOCB(19,BOTP4,CBSO,16,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3244 + 3245 + {"bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3246 + {"bdnzflr-", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3247 + {"bdnzflrl", XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3248 + {"bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3249 + {"bdnzflr+", XLO(19,BODNZFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3250 + {"bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3251 + {"bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3252 + {"bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3253 + {"bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3254 + {"bdzflrl-", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3255 + {"bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3256 + {"bdzflrl+", XLO(19,BODZFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3257 + {"bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3258 + {"bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3259 + {"bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}}, 3260 + {"bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3261 + {"bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3262 + {"bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}}, 3263 + {"bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3264 + {"bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3265 + {"bflr-", XLO(19,BOFM4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3266 + {"bflrl-", XLO(19,BOFM4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3267 + {"bflr+", XLO(19,BOFP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3268 + {"bflrl+", XLO(19,BOFP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3269 + {"bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3270 + {"bdnztlr-", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3271 + {"bdnztlrl", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3272 + {"bdnztlrl-", XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3273 + {"bdnztlr+", XLO(19,BODNZTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3274 + {"bdnztlrl+", XLO(19,BODNZTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3275 + {"bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3276 + {"bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3277 + {"bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3278 + {"bdztlrl-", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3279 + {"bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3280 + {"bdztlrl+", XLO(19,BODZTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3281 + {"btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3282 + {"btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3283 + {"bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}}, 3284 + {"btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3285 + {"btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3286 + {"bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, PPCVLE, {BI}}, 3287 + {"btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3288 + {"btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3289 + {"btlr-", XLO(19,BOTM4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3290 + {"btlrl-", XLO(19,BOTM4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3291 + {"btlr+", XLO(19,BOTP4,16,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3292 + {"btlrl+", XLO(19,BOTP4,16,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3293 + 3294 + {"bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}}, 3295 + {"bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}}, 3296 + {"bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}}, 3297 + {"bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}}, 3298 + {"bclr", XLLK(19,16,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}}, 3299 + {"bcr", XLLK(19,16,0), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}}, 3300 + {"bclrl", XLLK(19,16,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}}, 3301 + {"bcrl", XLLK(19,16,1), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}}, 3302 + 3303 + {"rfid", XL(19,18), 0xffffffff, PPC64, PPCVLE, {0}}, 3304 + 3305 + {"crnot", XL(19,33), XL_MASK, PPCCOM, PPCVLE, {BT, BA, BBA}}, 3306 + {"crnor", XL(19,33), XL_MASK, COM, PPCVLE, {BT, BA, BB}}, 3307 + {"rfmci", X(19,38), 0xffffffff, PPCRFMCI|PPCA2|PPC476, PPCVLE, {0}}, 3308 + 3309 + {"rfdi", XL(19,39), 0xffffffff, E500MC, PPCVLE, {0}}, 3310 + {"rfi", XL(19,50), 0xffffffff, COM, PPCVLE, {0}}, 3311 + {"rfci", XL(19,51), 0xffffffff, PPC403|BOOKE|PPCE300|PPCA2|PPC476, PPCVLE, {0}}, 3312 + 3313 + {"rfsvc", XL(19,82), 0xffffffff, POWER, PPCVLE, {0}}, 3314 + 3315 + {"rfgi", XL(19,102), 0xffffffff, E500MC|PPCA2, PPCVLE, {0}}, 3316 + 3317 + {"crandc", XL(19,129), XL_MASK, COM, PPCVLE, {BT, BA, BB}}, 3318 + 3319 + {"rfebb", XL(19,146), XLS_MASK, POWER8, PPCVLE, {SXL}}, 3320 + 3321 + {"isync", XL(19,150), 0xffffffff, PPCCOM, PPCVLE, {0}}, 3322 + {"ics", XL(19,150), 0xffffffff, PWRCOM, PPCVLE, {0}}, 3323 + 3324 + {"crclr", XL(19,193), XL_MASK, PPCCOM, PPCVLE, {BT, BAT, BBA}}, 3325 + {"crxor", XL(19,193), XL_MASK, COM, PPCVLE, {BT, BA, BB}}, 3326 + 3327 + {"dnh", X(19,198), X_MASK, E500MC, PPCVLE, {DUI, DUIS}}, 3328 + 3329 + {"crnand", XL(19,225), XL_MASK, COM, PPCVLE, {BT, BA, BB}}, 3330 + 3331 + {"crand", XL(19,257), XL_MASK, COM, PPCVLE, {BT, BA, BB}}, 3332 + 3333 + {"hrfid", XL(19,274), 0xffffffff, POWER5|CELL, PPC476|PPCVLE, {0}}, 3334 + 3335 + {"crset", XL(19,289), XL_MASK, PPCCOM, PPCVLE, {BT, BAT, BBA}}, 3336 + {"creqv", XL(19,289), XL_MASK, COM, PPCVLE, {BT, BA, BB}}, 3337 + 3338 + {"urfid", XL(19,306), 0xffffffff, POWER9, PPCVLE, {0}}, 3339 + {"stop", XL(19,370), 0xffffffff, POWER9, PPCVLE, {0}}, 3340 + 3341 + {"doze", XL(19,402), 0xffffffff, POWER6, POWER9|PPCVLE, {0}}, 3342 + 3343 + {"crorc", XL(19,417), XL_MASK, COM, PPCVLE, {BT, BA, BB}}, 3344 + 3345 + {"nap", XL(19,434), 0xffffffff, POWER6, POWER9|PPCVLE, {0}}, 3346 + 3347 + {"crmove", XL(19,449), XL_MASK, PPCCOM, PPCVLE, {BT, BA, BBA}}, 3348 + {"cror", XL(19,449), XL_MASK, COM, PPCVLE, {BT, BA, BB}}, 3349 + 3350 + {"sleep", XL(19,466), 0xffffffff, POWER6, POWER9|PPCVLE, {0}}, 3351 + {"rvwinkle", XL(19,498), 0xffffffff, POWER6, POWER9|PPCVLE, {0}}, 3352 + 3353 + {"bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, PPCVLE, {0}}, 3354 + {"bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, PPCVLE, {0}}, 3355 + 3356 + {"bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3357 + {"bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3358 + {"bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3359 + {"bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3360 + {"bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3361 + {"bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3362 + {"bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3363 + {"bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3364 + {"blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3365 + {"blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3366 + {"bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3367 + {"bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3368 + {"blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3369 + {"blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3370 + {"bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3371 + {"bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3372 + {"bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3373 + {"bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3374 + {"bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3375 + {"bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3376 + {"bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3377 + {"bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3378 + {"bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3379 + {"bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3380 + {"bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3381 + {"bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3382 + {"bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3383 + {"bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3384 + {"bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3385 + {"bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3386 + {"bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3387 + {"bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3388 + {"blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3389 + {"bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3390 + {"blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3391 + {"bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3392 + {"bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3393 + {"bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3394 + {"bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3395 + {"bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3396 + {"bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3397 + {"bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3398 + {"bgectr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3399 + {"bnlctr-", XLOCB(19,BOFM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3400 + {"bgectrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3401 + {"bnlctrl-",XLOCB(19,BOFM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3402 + {"blectr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3403 + {"bngctr-", XLOCB(19,BOFM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3404 + {"blectrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3405 + {"bngctrl-",XLOCB(19,BOFM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3406 + {"bnectr-", XLOCB(19,BOFM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3407 + {"bnectrl-",XLOCB(19,BOFM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3408 + {"bnsctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3409 + {"bnuctr-", XLOCB(19,BOFM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3410 + {"bnsctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3411 + {"bnuctrl-",XLOCB(19,BOFM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3412 + {"bgectr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3413 + {"bnlctr+", XLOCB(19,BOFP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3414 + {"bgectrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3415 + {"bnlctrl+",XLOCB(19,BOFP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3416 + {"blectr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3417 + {"bngctr+", XLOCB(19,BOFP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3418 + {"blectrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3419 + {"bngctrl+",XLOCB(19,BOFP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3420 + {"bnectr+", XLOCB(19,BOFP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3421 + {"bnectrl+",XLOCB(19,BOFP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3422 + {"bnsctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3423 + {"bnuctr+", XLOCB(19,BOFP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3424 + {"bnsctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3425 + {"bnuctrl+",XLOCB(19,BOFP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3426 + {"bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3427 + {"bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3428 + {"bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3429 + {"bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3430 + {"bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3431 + {"bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3432 + {"bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3433 + {"bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3434 + {"beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3435 + {"beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3436 + {"beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3437 + {"beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3438 + {"bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3439 + {"bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3440 + {"bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3441 + {"bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3442 + {"bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3443 + {"bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3444 + {"bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, PPCVLE, {CR}}, 3445 + {"bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3446 + {"bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3447 + {"bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3448 + {"bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3449 + {"bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3450 + {"beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3451 + {"beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3452 + {"bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3453 + {"bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3454 + {"bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3455 + {"bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, ISA_V2|PPCVLE, {CR}}, 3456 + {"bltctr-", XLOCB(19,BOTM4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3457 + {"bltctrl-",XLOCB(19,BOTM4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3458 + {"bgtctr-", XLOCB(19,BOTM4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3459 + {"bgtctrl-",XLOCB(19,BOTM4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3460 + {"beqctr-", XLOCB(19,BOTM4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3461 + {"beqctrl-",XLOCB(19,BOTM4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3462 + {"bsoctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3463 + {"bunctr-", XLOCB(19,BOTM4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3464 + {"bsoctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3465 + {"bunctrl-",XLOCB(19,BOTM4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3466 + {"bltctr+", XLOCB(19,BOTP4,CBLT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3467 + {"bltctrl+",XLOCB(19,BOTP4,CBLT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3468 + {"bgtctr+", XLOCB(19,BOTP4,CBGT,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3469 + {"bgtctrl+",XLOCB(19,BOTP4,CBGT,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3470 + {"beqctr+", XLOCB(19,BOTP4,CBEQ,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3471 + {"beqctrl+",XLOCB(19,BOTP4,CBEQ,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3472 + {"bsoctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3473 + {"bunctr+", XLOCB(19,BOTP4,CBSO,528,0), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3474 + {"bsoctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3475 + {"bunctrl+",XLOCB(19,BOTP4,CBSO,528,1), XLBOCBBB_MASK, ISA_V2, PPCVLE, {CR}}, 3476 + 3477 + {"bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3478 + {"bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3479 + {"bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3480 + {"bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3481 + {"bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3482 + {"bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3483 + {"bfctr-", XLO(19,BOFM4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3484 + {"bfctrl-", XLO(19,BOFM4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3485 + {"bfctr+", XLO(19,BOFP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3486 + {"bfctrl+", XLO(19,BOFP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3487 + {"btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3488 + {"btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3489 + {"btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, PPCVLE, {BI}}, 3490 + {"btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3491 + {"btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3492 + {"btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, PPCCOM, ISA_V2|PPCVLE, {BI}}, 3493 + {"btctr-", XLO(19,BOTM4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3494 + {"btctrl-", XLO(19,BOTM4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3495 + {"btctr+", XLO(19,BOTP4,528,0), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3496 + {"btctrl+", XLO(19,BOTP4,528,1), XLBOBB_MASK, ISA_V2, PPCVLE, {BI}}, 3497 + 3498 + {"bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}}, 3499 + {"bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}}, 3500 + {"bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}}, 3501 + {"bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPCCOM, PPCVLE, {BOE, BI}}, 3502 + {"bcctr", XLLK(19,528,0), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}}, 3503 + {"bcc", XLLK(19,528,0), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}}, 3504 + {"bcctrl", XLLK(19,528,1), XLBH_MASK, PPCCOM, PPCVLE, {BO, BI, BH}}, 3505 + {"bccl", XLLK(19,528,1), XLBB_MASK, PWRCOM, PPCVLE, {BO, BI}}, 3506 + 3507 + {"bctar-", XLYLK(19,560,0,0), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}}, 3508 + {"bctarl-", XLYLK(19,560,0,1), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}}, 3509 + {"bctar+", XLYLK(19,560,1,0), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}}, 3510 + {"bctarl+", XLYLK(19,560,1,1), XLYBB_MASK, POWER8, PPCVLE, {BOE, BI}}, 3511 + {"bctar", XLLK(19,560,0), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}}, 3512 + {"bctarl", XLLK(19,560,1), XLBH_MASK, POWER8, PPCVLE, {BO, BI, BH}}, 3513 + 3514 + {"rlwimi", M(20,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}}, 3515 + {"rlimi", M(20,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}}, 3516 + 3517 + {"rlwimi.", M(20,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}}, 3518 + {"rlimi.", M(20,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}}, 3519 + 3520 + {"rotlwi", MME(21,31,0), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, SH}}, 3521 + {"clrlwi", MME(21,31,0), MSHME_MASK, PPCCOM, PPCVLE, {RA, RS, MB}}, 3522 + {"rlwinm", M(21,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}}, 3523 + {"rlinm", M(21,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}}, 3524 + {"rotlwi.", MME(21,31,1), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, SH}}, 3525 + {"clrlwi.", MME(21,31,1), MSHME_MASK, PPCCOM, PPCVLE, {RA, RS, MB}}, 3526 + {"rlwinm.", M(21,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, SH, MBE, ME}}, 3527 + {"rlinm.", M(21,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, SH, MBE, ME}}, 3528 + 3529 + {"rlmi", M(22,0), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}}, 3530 + {"rlmi.", M(22,1), M_MASK, M601, PPCVLE, {RA, RS, RB, MBE, ME}}, 3531 + 3532 + {"rotlw", MME(23,31,0), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, RB}}, 3533 + {"rlwnm", M(23,0), M_MASK, PPCCOM, PPCVLE, {RA, RS, RB, MBE, ME}}, 3534 + {"rlnm", M(23,0), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}}, 3535 + {"rotlw.", MME(23,31,1), MMBME_MASK, PPCCOM, PPCVLE, {RA, RS, RB}}, 3536 + {"rlwnm.", M(23,1), M_MASK, PPCCOM, PPCVLE, {RA, RS, RB, MBE, ME}}, 3537 + {"rlnm.", M(23,1), M_MASK, PWRCOM, PPCVLE, {RA, RS, RB, MBE, ME}}, 3538 + 3539 + {"nop", OP(24), 0xffffffff, PPCCOM, PPCVLE, {0}}, 3540 + {"ori", OP(24), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}}, 3541 + {"oril", OP(24), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}}, 3542 + 3543 + {"oris", OP(25), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}}, 3544 + {"oriu", OP(25), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}}, 3545 + 3546 + {"xnop", OP(26), 0xffffffff, PPCCOM, PPCVLE, {0}}, 3547 + {"xori", OP(26), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}}, 3548 + {"xoril", OP(26), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}}, 3549 + 3550 + {"xoris", OP(27), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}}, 3551 + {"xoriu", OP(27), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}}, 3552 + 3553 + {"andi.", OP(28), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}}, 3554 + {"andil.", OP(28), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}}, 3555 + 3556 + {"andis.", OP(29), OP_MASK, PPCCOM, PPCVLE, {RA, RS, UI}}, 3557 + {"andiu.", OP(29), OP_MASK, PWRCOM, PPCVLE, {RA, RS, UI}}, 3558 + 3559 + {"rotldi", MD(30,0,0), MDMB_MASK, PPC64, PPCVLE, {RA, RS, SH6}}, 3560 + {"clrldi", MD(30,0,0), MDSH_MASK, PPC64, PPCVLE, {RA, RS, MB6}}, 3561 + {"rldicl", MD(30,0,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}}, 3562 + {"rotldi.", MD(30,0,1), MDMB_MASK, PPC64, PPCVLE, {RA, RS, SH6}}, 3563 + {"clrldi.", MD(30,0,1), MDSH_MASK, PPC64, PPCVLE, {RA, RS, MB6}}, 3564 + {"rldicl.", MD(30,0,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}}, 3565 + 3566 + {"rldicr", MD(30,1,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, ME6}}, 3567 + {"rldicr.", MD(30,1,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, ME6}}, 3568 + 3569 + {"rldic", MD(30,2,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}}, 3570 + {"rldic.", MD(30,2,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}}, 3571 + 3572 + {"rldimi", MD(30,3,0), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}}, 3573 + {"rldimi.", MD(30,3,1), MD_MASK, PPC64, PPCVLE, {RA, RS, SH6, MB6}}, 3574 + 3575 + {"rotld", MDS(30,8,0), MDSMB_MASK, PPC64, PPCVLE, {RA, RS, RB}}, 3576 + {"rldcl", MDS(30,8,0), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, MB6}}, 3577 + {"rotld.", MDS(30,8,1), MDSMB_MASK, PPC64, PPCVLE, {RA, RS, RB}}, 3578 + {"rldcl.", MDS(30,8,1), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, MB6}}, 3579 + 3580 + {"rldcr", MDS(30,9,0), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, ME6}}, 3581 + {"rldcr.", MDS(30,9,1), MDS_MASK, PPC64, PPCVLE, {RA, RS, RB, ME6}}, 3582 + 3583 + {"cmpw", XOPL(31,0,0), XCMPL_MASK, PPCCOM, 0, {OBF, RA, RB}}, 3584 + {"cmpd", XOPL(31,0,1), XCMPL_MASK, PPC64, 0, {OBF, RA, RB}}, 3585 + {"cmp", X(31,0), XCMP_MASK, PPC, 0, {BF, L32OPT, RA, RB}}, 3586 + {"cmp", X(31,0), XCMPL_MASK, PWRCOM, PPC, {BF, RA, RB}}, 3587 + 3588 + {"twlgt", XTO(31,4,TOLGT), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3589 + {"tlgt", XTO(31,4,TOLGT), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3590 + {"twllt", XTO(31,4,TOLLT), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3591 + {"tllt", XTO(31,4,TOLLT), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3592 + {"tweq", XTO(31,4,TOEQ), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3593 + {"teq", XTO(31,4,TOEQ), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3594 + {"twlge", XTO(31,4,TOLGE), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3595 + {"tlge", XTO(31,4,TOLGE), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3596 + {"twlnl", XTO(31,4,TOLNL), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3597 + {"tlnl", XTO(31,4,TOLNL), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3598 + {"twlle", XTO(31,4,TOLLE), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3599 + {"tlle", XTO(31,4,TOLLE), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3600 + {"twlng", XTO(31,4,TOLNG), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3601 + {"tlng", XTO(31,4,TOLNG), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3602 + {"twgt", XTO(31,4,TOGT), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3603 + {"tgt", XTO(31,4,TOGT), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3604 + {"twge", XTO(31,4,TOGE), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3605 + {"tge", XTO(31,4,TOGE), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3606 + {"twnl", XTO(31,4,TONL), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3607 + {"tnl", XTO(31,4,TONL), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3608 + {"twlt", XTO(31,4,TOLT), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3609 + {"tlt", XTO(31,4,TOLT), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3610 + {"twle", XTO(31,4,TOLE), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3611 + {"tle", XTO(31,4,TOLE), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3612 + {"twng", XTO(31,4,TONG), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3613 + {"tng", XTO(31,4,TONG), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3614 + {"twne", XTO(31,4,TONE), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3615 + {"tne", XTO(31,4,TONE), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3616 + {"trap", XTO(31,4,TOU), 0xffffffff, PPCCOM, 0, {0}}, 3617 + {"twu", XTO(31,4,TOU), XTO_MASK, PPCCOM, 0, {RA, RB}}, 3618 + {"tu", XTO(31,4,TOU), XTO_MASK, PWRCOM, 0, {RA, RB}}, 3619 + {"tw", X(31,4), X_MASK, PPCCOM, 0, {TO, RA, RB}}, 3620 + {"t", X(31,4), X_MASK, PWRCOM, 0, {TO, RA, RB}}, 3621 + 3622 + {"lvsl", X(31,6), X_MASK, PPCVEC, 0, {VD, RA0, RB}}, 3623 + {"lvebx", X(31,7), X_MASK, PPCVEC, 0, {VD, RA0, RB}}, 3624 + {"lbfcmx", APU(31,7,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 3625 + 3626 + {"subfc", XO(31,8,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 3627 + {"sf", XO(31,8,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 3628 + {"subc", XO(31,8,0,0), XO_MASK, PPCCOM, 0, {RT, RB, RA}}, 3629 + {"subfc.", XO(31,8,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 3630 + {"sf.", XO(31,8,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 3631 + {"subc.", XO(31,8,0,1), XO_MASK, PPCCOM, 0, {RT, RB, RA}}, 3632 + 3633 + {"mulhdu", XO(31,9,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}}, 3634 + {"mulhdu.", XO(31,9,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}}, 3635 + 3636 + {"addc", XO(31,10,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 3637 + {"a", XO(31,10,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 3638 + {"addc.", XO(31,10,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 3639 + {"a.", XO(31,10,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 3640 + 3641 + {"mulhwu", XO(31,11,0,0), XO_MASK, PPC, 0, {RT, RA, RB}}, 3642 + {"mulhwu.", XO(31,11,0,1), XO_MASK, PPC, 0, {RT, RA, RB}}, 3643 + 3644 + {"lxsiwzx", X(31,12), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}}, 3645 + 3646 + {"isellt", X(31,15), X_MASK, PPCISEL, 0, {RT, RA0, RB}}, 3647 + 3648 + {"tlbilxlpid", XTO(31,18,0), XTO_MASK, E500MC|PPCA2, 0, {0}}, 3649 + {"tlbilxpid", XTO(31,18,1), XTO_MASK, E500MC|PPCA2, 0, {0}}, 3650 + {"tlbilxva", XTO(31,18,3), XTO_MASK, E500MC|PPCA2, 0, {RA0, RB}}, 3651 + {"tlbilx", X(31,18), X_MASK, E500MC|PPCA2, 0, {T, RA0, RB}}, 3652 + 3653 + {"mfcr", XFXM(31,19,0,0), XFXFXM_MASK, COM, 0, {RT, FXM4}}, 3654 + {"mfocrf", XFXM(31,19,0,1), XFXFXM_MASK, COM, 0, {RT, FXM}}, 3655 + 3656 + {"lwarx", X(31,20), XEH_MASK, PPC, 0, {RT, RA0, RB, EH}}, 3657 + 3658 + {"ldx", X(31,21), X_MASK, PPC64, 0, {RT, RA0, RB}}, 3659 + 3660 + {"icbt", X(31,22), X_MASK, BOOKE|PPCE300|PPCA2|PPC476, 0, {CT, RA0, RB}}, 3661 + 3662 + {"lwzx", X(31,23), X_MASK, PPCCOM, 0, {RT, RA0, RB}}, 3663 + {"lx", X(31,23), X_MASK, PWRCOM, 0, {RT, RA, RB}}, 3664 + 3665 + {"slw", XRC(31,24,0), X_MASK, PPCCOM, 0, {RA, RS, RB}}, 3666 + {"sl", XRC(31,24,0), X_MASK, PWRCOM, 0, {RA, RS, RB}}, 3667 + {"slw.", XRC(31,24,1), X_MASK, PPCCOM, 0, {RA, RS, RB}}, 3668 + {"sl.", XRC(31,24,1), X_MASK, PWRCOM, 0, {RA, RS, RB}}, 3669 + 3670 + {"cntlzw", XRC(31,26,0), XRB_MASK, PPCCOM, 0, {RA, RS}}, 3671 + {"cntlz", XRC(31,26,0), XRB_MASK, PWRCOM, 0, {RA, RS}}, 3672 + {"cntlzw.", XRC(31,26,1), XRB_MASK, PPCCOM, 0, {RA, RS}}, 3673 + {"cntlz.", XRC(31,26,1), XRB_MASK, PWRCOM, 0, {RA, RS}}, 3674 + 3675 + {"sld", XRC(31,27,0), X_MASK, PPC64, 0, {RA, RS, RB}}, 3676 + {"sld.", XRC(31,27,1), X_MASK, PPC64, 0, {RA, RS, RB}}, 3677 + 3678 + {"and", XRC(31,28,0), X_MASK, COM, 0, {RA, RS, RB}}, 3679 + {"and.", XRC(31,28,1), X_MASK, COM, 0, {RA, RS, RB}}, 3680 + 3681 + {"maskg", XRC(31,29,0), X_MASK, M601, PPCA2, {RA, RS, RB}}, 3682 + {"maskg.", XRC(31,29,1), X_MASK, M601, PPCA2, {RA, RS, RB}}, 3683 + 3684 + {"ldepx", X(31,29), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}}, 3685 + 3686 + {"waitasec", X(31,30), XRTRARB_MASK, POWER8, POWER9, {0}}, 3687 + {"wait", X(31,30), XWC_MASK, POWER9, 0, {WC}}, 3688 + 3689 + {"lwepx", X(31,31), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}}, 3690 + 3691 + {"cmplw", XOPL(31,32,0), XCMPL_MASK, PPCCOM, 0, {OBF, RA, RB}}, 3692 + {"cmpld", XOPL(31,32,1), XCMPL_MASK, PPC64, 0, {OBF, RA, RB}}, 3693 + {"cmpl", X(31,32), XCMP_MASK, PPC, 0, {BF, L32OPT, RA, RB}}, 3694 + {"cmpl", X(31,32), XCMPL_MASK, PWRCOM, PPC, {BF, RA, RB}}, 3695 + 3696 + {"lvsr", X(31,38), X_MASK, PPCVEC, 0, {VD, RA0, RB}}, 3697 + {"lvehx", X(31,39), X_MASK, PPCVEC, 0, {VD, RA0, RB}}, 3698 + {"lhfcmx", APU(31,39,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 3699 + 3700 + {"mviwsplt", X(31,46), X_MASK, PPCVEC2, 0, {VD, RA, RB}}, 3701 + 3702 + {"iselgt", X(31,47), X_MASK, PPCISEL, 0, {RT, RA0, RB}}, 3703 + 3704 + {"lvewx", X(31,71), X_MASK, PPCVEC, 0, {VD, RA0, RB}}, 3705 + 3706 + {"addg6s", XO(31,74,0,0), XO_MASK, POWER6, 0, {RT, RA, RB}}, 3707 + 3708 + {"lxsiwax", X(31,76), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}}, 3709 + 3710 + {"iseleq", X(31,79), X_MASK, PPCISEL, 0, {RT, RA0, RB}}, 3711 + 3712 + {"isel", XISEL(31,15), XISEL_MASK, PPCISEL|TITAN, 0, {RT, RA0, RB, CRB}}, 3713 + 3714 + {"subf", XO(31,40,0,0), XO_MASK, PPC, 0, {RT, RA, RB}}, 3715 + {"sub", XO(31,40,0,0), XO_MASK, PPC, 0, {RT, RB, RA}}, 3716 + {"subf.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RA, RB}}, 3717 + {"sub.", XO(31,40,0,1), XO_MASK, PPC, 0, {RT, RB, RA}}, 3718 + 3719 + {"mfvsrd", X(31,51), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}}, 3720 + {"mffprd", X(31,51), XX1RB_MASK|1, PPCVSX2, 0, {RA, FRS}}, 3721 + {"mfvrd", X(31,51)|1, XX1RB_MASK|1, PPCVSX2, 0, {RA, VS}}, 3722 + {"eratilx", X(31,51), X_MASK, PPCA2, 0, {ERAT_T, RA, RB}}, 3723 + 3724 + {"lbarx", X(31,52), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}}, 3725 + 3726 + {"ldux", X(31,53), X_MASK, PPC64, 0, {RT, RAL, RB}}, 3727 + 3728 + {"dcbst", X(31,54), XRT_MASK, PPC, 0, {RA0, RB}}, 3729 + 3730 + {"lwzux", X(31,55), X_MASK, PPCCOM, 0, {RT, RAL, RB}}, 3731 + {"lux", X(31,55), X_MASK, PWRCOM, 0, {RT, RA, RB}}, 3732 + 3733 + {"cntlzd", XRC(31,58,0), XRB_MASK, PPC64, 0, {RA, RS}}, 3734 + {"cntlzd.", XRC(31,58,1), XRB_MASK, PPC64, 0, {RA, RS}}, 3735 + 3736 + {"andc", XRC(31,60,0), X_MASK, COM, 0, {RA, RS, RB}}, 3737 + {"andc.", XRC(31,60,1), X_MASK, COM, 0, {RA, RS, RB}}, 3738 + 3739 + {"waitrsv", X(31,62)|(1<<21), 0xffffffff, E500MC|PPCA2, 0, {0}}, 3740 + {"waitimpl", X(31,62)|(2<<21), 0xffffffff, E500MC|PPCA2, 0, {0}}, 3741 + {"wait", X(31,62), XWC_MASK, E500MC|PPCA2, 0, {WC}}, 3742 + 3743 + {"dcbstep", XRT(31,63,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}}, 3744 + 3745 + {"tdlgt", XTO(31,68,TOLGT), XTO_MASK, PPC64, 0, {RA, RB}}, 3746 + {"tdllt", XTO(31,68,TOLLT), XTO_MASK, PPC64, 0, {RA, RB}}, 3747 + {"tdeq", XTO(31,68,TOEQ), XTO_MASK, PPC64, 0, {RA, RB}}, 3748 + {"tdlge", XTO(31,68,TOLGE), XTO_MASK, PPC64, 0, {RA, RB}}, 3749 + {"tdlnl", XTO(31,68,TOLNL), XTO_MASK, PPC64, 0, {RA, RB}}, 3750 + {"tdlle", XTO(31,68,TOLLE), XTO_MASK, PPC64, 0, {RA, RB}}, 3751 + {"tdlng", XTO(31,68,TOLNG), XTO_MASK, PPC64, 0, {RA, RB}}, 3752 + {"tdgt", XTO(31,68,TOGT), XTO_MASK, PPC64, 0, {RA, RB}}, 3753 + {"tdge", XTO(31,68,TOGE), XTO_MASK, PPC64, 0, {RA, RB}}, 3754 + {"tdnl", XTO(31,68,TONL), XTO_MASK, PPC64, 0, {RA, RB}}, 3755 + {"tdlt", XTO(31,68,TOLT), XTO_MASK, PPC64, 0, {RA, RB}}, 3756 + {"tdle", XTO(31,68,TOLE), XTO_MASK, PPC64, 0, {RA, RB}}, 3757 + {"tdng", XTO(31,68,TONG), XTO_MASK, PPC64, 0, {RA, RB}}, 3758 + {"tdne", XTO(31,68,TONE), XTO_MASK, PPC64, 0, {RA, RB}}, 3759 + {"tdu", XTO(31,68,TOU), XTO_MASK, PPC64, 0, {RA, RB}}, 3760 + {"td", X(31,68), X_MASK, PPC64, 0, {TO, RA, RB}}, 3761 + 3762 + {"lwfcmx", APU(31,71,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 3763 + {"mulhd", XO(31,73,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}}, 3764 + {"mulhd.", XO(31,73,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}}, 3765 + 3766 + {"mulhw", XO(31,75,0,0), XO_MASK, PPC, 0, {RT, RA, RB}}, 3767 + {"mulhw.", XO(31,75,0,1), XO_MASK, PPC, 0, {RT, RA, RB}}, 3768 + 3769 + {"dlmzb", XRC(31,78,0), X_MASK, PPC403|PPC440|TITAN, 0, {RA, RS, RB}}, 3770 + {"dlmzb.", XRC(31,78,1), X_MASK, PPC403|PPC440|TITAN, 0, {RA, RS, RB}}, 3771 + 3772 + {"mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, 0, {SR, RS}}, 3773 + 3774 + {"mfmsr", X(31,83), XRARB_MASK, COM, 0, {RT}}, 3775 + 3776 + {"ldarx", X(31,84), XEH_MASK, PPC64, 0, {RT, RA0, RB, EH}}, 3777 + 3778 + {"dcbfl", XOPL(31,86,1), XRT_MASK, POWER5, PPC476, {RA0, RB}}, 3779 + {"dcbf", X(31,86), XLRT_MASK, PPC, 0, {RA0, RB, L2OPT}}, 3780 + 3781 + {"lbzx", X(31,87), X_MASK, COM, 0, {RT, RA0, RB}}, 3782 + 3783 + {"lbepx", X(31,95), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}}, 3784 + 3785 + {"dni", XRC(31,97,1), XRB_MASK, E6500, 0, {DUI, DCTL}}, 3786 + 3787 + {"lvx", X(31,103), X_MASK, PPCVEC, 0, {VD, RA0, RB}}, 3788 + {"lqfcmx", APU(31,103,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 3789 + 3790 + {"neg", XO(31,104,0,0), XORB_MASK, COM, 0, {RT, RA}}, 3791 + {"neg.", XO(31,104,0,1), XORB_MASK, COM, 0, {RT, RA}}, 3792 + 3793 + {"mul", XO(31,107,0,0), XO_MASK, M601, 0, {RT, RA, RB}}, 3794 + {"mul.", XO(31,107,0,1), XO_MASK, M601, 0, {RT, RA, RB}}, 3795 + 3796 + {"mvidsplt", X(31,110), X_MASK, PPCVEC2, 0, {VD, RA, RB}}, 3797 + 3798 + {"mtsrdin", X(31,114), XRA_MASK, PPC64, 0, {RS, RB}}, 3799 + 3800 + {"mffprwz", X(31,115), XX1RB_MASK|1, PPCVSX2, 0, {RA, FRS}}, 3801 + {"mfvrwz", X(31,115)|1, XX1RB_MASK|1, PPCVSX2, 0, {RA, VS}}, 3802 + {"mfvsrwz", X(31,115), XX1RB_MASK, PPCVSX2, 0, {RA, XS6}}, 3803 + 3804 + {"lharx", X(31,116), XEH_MASK, POWER8|E6500, 0, {RT, RA0, RB, EH}}, 3805 + 3806 + {"clf", X(31,118), XTO_MASK, POWER, 0, {RA, RB}}, 3807 + 3808 + {"lbzux", X(31,119), X_MASK, COM, 0, {RT, RAL, RB}}, 3809 + 3810 + {"popcntb", X(31,122), XRB_MASK, POWER5, 0, {RA, RS}}, 3811 + 3812 + {"not", XRC(31,124,0), X_MASK, COM, 0, {RA, RS, RBS}}, 3813 + {"nor", XRC(31,124,0), X_MASK, COM, 0, {RA, RS, RB}}, 3814 + {"not.", XRC(31,124,1), X_MASK, COM, 0, {RA, RS, RBS}}, 3815 + {"nor.", XRC(31,124,1), X_MASK, COM, 0, {RA, RS, RB}}, 3816 + 3817 + {"dcbfep", XRT(31,127,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}}, 3818 + 3819 + {"setb", X(31,128), XRB_MASK|(3<<16), POWER9, 0, {RT, BFA}}, 3820 + 3821 + {"wrtee", X(31,131), XRARB_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RS}}, 3822 + 3823 + {"dcbtstls", X(31,134), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}}, 3824 + 3825 + {"stvebx", X(31,135), X_MASK, PPCVEC, 0, {VS, RA0, RB}}, 3826 + {"stbfcmx", APU(31,135,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 3827 + 3828 + {"subfe", XO(31,136,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 3829 + {"sfe", XO(31,136,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 3830 + {"subfe.", XO(31,136,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 3831 + {"sfe.", XO(31,136,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 3832 + 3833 + {"adde", XO(31,138,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 3834 + {"ae", XO(31,138,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 3835 + {"adde.", XO(31,138,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 3836 + {"ae.", XO(31,138,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 3837 + 3838 + {"stxsiwx", X(31,140), XX1_MASK, PPCVSX2, 0, {XS6, RA0, RB}}, 3839 + 3840 + {"msgsndp", XRTRA(31,142,0,0), XRTRA_MASK, POWER8, 0, {RB}}, 3841 + {"dcbtstlse", X(31,142), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}}, 3842 + 3843 + {"mtcr", XFXM(31,144,0xff,0), XRARB_MASK, COM, 0, {RS}}, 3844 + {"mtcrf", XFXM(31,144,0,0), XFXFXM_MASK, COM, 0, {FXM, RS}}, 3845 + {"mtocrf", XFXM(31,144,0,1), XFXFXM_MASK, COM, 0, {FXM, RS}}, 3846 + 3847 + {"mtmsr", X(31,146), XRLARB_MASK, COM, 0, {RS, A_L}}, 3848 + 3849 + {"mtsle", X(31,147), XRTLRARB_MASK, POWER8, 0, {L}}, 3850 + 3851 + {"eratsx", XRC(31,147,0), X_MASK, PPCA2, 0, {RT, RA0, RB}}, 3852 + {"eratsx.", XRC(31,147,1), X_MASK, PPCA2, 0, {RT, RA0, RB}}, 3853 + 3854 + {"stdx", X(31,149), X_MASK, PPC64, 0, {RS, RA0, RB}}, 3855 + 3856 + {"stwcx.", XRC(31,150,1), X_MASK, PPC, 0, {RS, RA0, RB}}, 3857 + 3858 + {"stwx", X(31,151), X_MASK, PPCCOM, 0, {RS, RA0, RB}}, 3859 + {"stx", X(31,151), X_MASK, PWRCOM, 0, {RS, RA, RB}}, 3860 + 3861 + {"slq", XRC(31,152,0), X_MASK, M601, 0, {RA, RS, RB}}, 3862 + {"slq.", XRC(31,152,1), X_MASK, M601, 0, {RA, RS, RB}}, 3863 + 3864 + {"sle", XRC(31,153,0), X_MASK, M601, 0, {RA, RS, RB}}, 3865 + {"sle.", XRC(31,153,1), X_MASK, M601, 0, {RA, RS, RB}}, 3866 + 3867 + {"prtyw", X(31,154), XRB_MASK, POWER6|PPCA2|PPC476, 0, {RA, RS}}, 3868 + 3869 + {"stdepx", X(31,157), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}}, 3870 + 3871 + {"stwepx", X(31,159), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}}, 3872 + 3873 + {"wrteei", X(31,163), XE_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {E}}, 3874 + 3875 + {"dcbtls", X(31,166), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}}, 3876 + 3877 + {"stvehx", X(31,167), X_MASK, PPCVEC, 0, {VS, RA0, RB}}, 3878 + {"sthfcmx", APU(31,167,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 3879 + 3880 + {"addex", ZRC(31,170,0), Z2_MASK, POWER9, 0, {RT, RA, RB, CY}}, 3881 + 3882 + {"msgclrp", XRTRA(31,174,0,0), XRTRA_MASK, POWER8, 0, {RB}}, 3883 + {"dcbtlse", X(31,174), X_MASK, PPCCHLK, E500MC, {CT, RA0, RB}}, 3884 + 3885 + {"mtmsrd", X(31,178), XRLARB_MASK, PPC64, 0, {RS, A_L}}, 3886 + 3887 + {"mtvsrd", X(31,179), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}}, 3888 + {"mtfprd", X(31,179), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}}, 3889 + {"mtvrd", X(31,179)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}}, 3890 + {"eratre", X(31,179), X_MASK, PPCA2, 0, {RT, RA, WS}}, 3891 + 3892 + {"stdux", X(31,181), X_MASK, PPC64, 0, {RS, RAS, RB}}, 3893 + 3894 + {"stqcx.", XRC(31,182,1), X_MASK, POWER8, 0, {RSQ, RA0, RB}}, 3895 + {"wchkall", X(31,182), X_MASK, PPCA2, 0, {OBF}}, 3896 + 3897 + {"stwux", X(31,183), X_MASK, PPCCOM, 0, {RS, RAS, RB}}, 3898 + {"stux", X(31,183), X_MASK, PWRCOM, 0, {RS, RA0, RB}}, 3899 + 3900 + {"sliq", XRC(31,184,0), X_MASK, M601, 0, {RA, RS, SH}}, 3901 + {"sliq.", XRC(31,184,1), X_MASK, M601, 0, {RA, RS, SH}}, 3902 + 3903 + {"prtyd", X(31,186), XRB_MASK, POWER6|PPCA2, 0, {RA, RS}}, 3904 + 3905 + {"cmprb", X(31,192), XCMP_MASK, POWER9, 0, {BF, L, RA, RB}}, 3906 + 3907 + {"icblq.", XRC(31,198,1), X_MASK, E6500, 0, {CT, RA0, RB}}, 3908 + 3909 + {"stvewx", X(31,199), X_MASK, PPCVEC, 0, {VS, RA0, RB}}, 3910 + {"stwfcmx", APU(31,199,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 3911 + 3912 + {"subfze", XO(31,200,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}}, 3913 + {"sfze", XO(31,200,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}}, 3914 + {"subfze.", XO(31,200,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}}, 3915 + {"sfze.", XO(31,200,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}}, 3916 + 3917 + {"addze", XO(31,202,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}}, 3918 + {"aze", XO(31,202,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}}, 3919 + {"addze.", XO(31,202,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}}, 3920 + {"aze.", XO(31,202,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}}, 3921 + 3922 + {"msgsnd", XRTRA(31,206,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0, {RB}}, 3923 + 3924 + {"mtsr", X(31,210), XRB_MASK|(1<<20), COM, NON32, {SR, RS}}, 3925 + 3926 + {"mtfprwa", X(31,211), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}}, 3927 + {"mtvrwa", X(31,211)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}}, 3928 + {"mtvsrwa", X(31,211), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}}, 3929 + {"eratwe", X(31,211), X_MASK, PPCA2, 0, {RS, RA, WS}}, 3930 + 3931 + {"ldawx.", XRC(31,212,1), X_MASK, PPCA2, 0, {RT, RA0, RB}}, 3932 + 3933 + {"stdcx.", XRC(31,214,1), X_MASK, PPC64, 0, {RS, RA0, RB}}, 3934 + 3935 + {"stbx", X(31,215), X_MASK, COM, 0, {RS, RA0, RB}}, 3936 + 3937 + {"sllq", XRC(31,216,0), X_MASK, M601, 0, {RA, RS, RB}}, 3938 + {"sllq.", XRC(31,216,1), X_MASK, M601, 0, {RA, RS, RB}}, 3939 + 3940 + {"sleq", XRC(31,217,0), X_MASK, M601, 0, {RA, RS, RB}}, 3941 + {"sleq.", XRC(31,217,1), X_MASK, M601, 0, {RA, RS, RB}}, 3942 + 3943 + {"stbepx", X(31,223), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}}, 3944 + 3945 + {"cmpeqb", X(31,224), XCMPL_MASK, POWER9, 0, {BF, RA, RB}}, 3946 + 3947 + {"icblc", X(31,230), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}}, 3948 + 3949 + {"stvx", X(31,231), X_MASK, PPCVEC, 0, {VS, RA0, RB}}, 3950 + {"stqfcmx", APU(31,231,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 3951 + 3952 + {"subfme", XO(31,232,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}}, 3953 + {"sfme", XO(31,232,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}}, 3954 + {"subfme.", XO(31,232,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}}, 3955 + {"sfme.", XO(31,232,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}}, 3956 + 3957 + {"mulld", XO(31,233,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}}, 3958 + {"mulld.", XO(31,233,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}}, 3959 + 3960 + {"addme", XO(31,234,0,0), XORB_MASK, PPCCOM, 0, {RT, RA}}, 3961 + {"ame", XO(31,234,0,0), XORB_MASK, PWRCOM, 0, {RT, RA}}, 3962 + {"addme.", XO(31,234,0,1), XORB_MASK, PPCCOM, 0, {RT, RA}}, 3963 + {"ame.", XO(31,234,0,1), XORB_MASK, PWRCOM, 0, {RT, RA}}, 3964 + 3965 + {"mullw", XO(31,235,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 3966 + {"muls", XO(31,235,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 3967 + {"mullw.", XO(31,235,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 3968 + {"muls.", XO(31,235,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 3969 + 3970 + {"icblce", X(31,238), X_MASK, PPCCHLK, E500MC|PPCA2, {CT, RA, RB}}, 3971 + {"msgclr", XRTRA(31,238,0,0), XRTRA_MASK, E500MC|PPCA2|POWER8, 0, {RB}}, 3972 + {"mtsrin", X(31,242), XRA_MASK, PPC, NON32, {RS, RB}}, 3973 + {"mtsri", X(31,242), XRA_MASK, POWER, NON32, {RS, RB}}, 3974 + 3975 + {"mtfprwz", X(31,243), XX1RB_MASK|1, PPCVSX2, 0, {FRT, RA}}, 3976 + {"mtvrwz", X(31,243)|1, XX1RB_MASK|1, PPCVSX2, 0, {VD, RA}}, 3977 + {"mtvsrwz", X(31,243), XX1RB_MASK, PPCVSX2, 0, {XT6, RA}}, 3978 + 3979 + {"dcbtstt", XRT(31,246,0x10), XRT_MASK, POWER7, 0, {RA0, RB}}, 3980 + {"dcbtst", X(31,246), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}}, 3981 + {"dcbtst", X(31,246), X_MASK, DCBT_EO, 0, {CT, RA0, RB}}, 3982 + {"dcbtst", X(31,246), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}}, 3983 + 3984 + {"stbux", X(31,247), X_MASK, COM, 0, {RS, RAS, RB}}, 3985 + 3986 + {"slliq", XRC(31,248,0), X_MASK, M601, 0, {RA, RS, SH}}, 3987 + {"slliq.", XRC(31,248,1), X_MASK, M601, 0, {RA, RS, SH}}, 3988 + 3989 + {"bpermd", X(31,252), X_MASK, POWER7|PPCA2, 0, {RA, RS, RB}}, 3990 + 3991 + {"dcbtstep", XRT(31,255,0), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}}, 3992 + 3993 + {"mfdcrx", X(31,259), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RS, RA}}, 3994 + {"mfdcrx.", XRC(31,259,1), X_MASK, PPCA2, 0, {RS, RA}}, 3995 + 3996 + {"lvexbx", X(31,261), X_MASK, PPCVEC2, 0, {VD, RA0, RB}}, 3997 + 3998 + {"icbt", X(31,262), XRT_MASK, PPC403, 0, {RA, RB}}, 3999 + 4000 + {"lvepxl", X(31,263), X_MASK, PPCVEC2, 0, {VD, RA0, RB}}, 4001 + 4002 + {"ldfcmx", APU(31,263,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 4003 + {"doz", XO(31,264,0,0), XO_MASK, M601, 0, {RT, RA, RB}}, 4004 + {"doz.", XO(31,264,0,1), XO_MASK, M601, 0, {RT, RA, RB}}, 4005 + 4006 + {"modud", X(31,265), X_MASK, POWER9, 0, {RT, RA, RB}}, 4007 + 4008 + {"add", XO(31,266,0,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4009 + {"cax", XO(31,266,0,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4010 + {"add.", XO(31,266,0,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4011 + {"cax.", XO(31,266,0,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4012 + 4013 + {"moduw", X(31,267), X_MASK, POWER9, 0, {RT, RA, RB}}, 4014 + 4015 + {"lxvx", X(31,268), XX1_MASK|1<<6, PPCVSX3, 0, {XT6, RA0, RB}}, 4016 + {"lxvl", X(31,269), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}}, 4017 + 4018 + {"ehpriv", X(31,270), 0xffffffff, E500MC|PPCA2, 0, {0}}, 4019 + 4020 + {"tlbiel", X(31,274), X_MASK|1<<20,POWER9, PPC476, {RB, RSO, RIC, PRS, X_R}}, 4021 + {"tlbiel", X(31,274), XRTLRA_MASK, POWER4, POWER9|PPC476, {RB, LOPT}}, 4022 + 4023 + {"mfapidi", X(31,275), X_MASK, BOOKE, E500|TITAN, {RT, RA}}, 4024 + 4025 + {"lqarx", X(31,276), XEH_MASK, POWER8, 0, {RTQ, RAX, RBX, EH}}, 4026 + 4027 + {"lscbx", XRC(31,277,0), X_MASK, M601, 0, {RT, RA, RB}}, 4028 + {"lscbx.", XRC(31,277,1), X_MASK, M601, 0, {RT, RA, RB}}, 4029 + 4030 + {"dcbtt", XRT(31,278,0x10), XRT_MASK, POWER7, 0, {RA0, RB}}, 4031 + {"dcbt", X(31,278), X_MASK, POWER4, DCBT_EO, {RA0, RB, CT}}, 4032 + {"dcbt", X(31,278), X_MASK, DCBT_EO, 0, {CT, RA0, RB}}, 4033 + {"dcbt", X(31,278), X_MASK, PPC, POWER4|DCBT_EO, {RA0, RB}}, 4034 + 4035 + {"lhzx", X(31,279), X_MASK, COM, 0, {RT, RA0, RB}}, 4036 + 4037 + {"cdtbcd", X(31,282), XRB_MASK, POWER6, 0, {RA, RS}}, 4038 + 4039 + {"eqv", XRC(31,284,0), X_MASK, COM, 0, {RA, RS, RB}}, 4040 + {"eqv.", XRC(31,284,1), X_MASK, COM, 0, {RA, RS, RB}}, 4041 + 4042 + {"lhepx", X(31,287), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}}, 4043 + 4044 + {"mfdcrux", X(31,291), X_MASK, PPC464, 0, {RS, RA}}, 4045 + 4046 + {"lvexhx", X(31,293), X_MASK, PPCVEC2, 0, {VD, RA0, RB}}, 4047 + {"lvepx", X(31,295), X_MASK, PPCVEC2, 0, {VD, RA0, RB}}, 4048 + 4049 + {"lxvll", X(31,301), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}}, 4050 + 4051 + {"mfbhrbe", X(31,302), X_MASK, POWER8, 0, {RT, BHRBE}}, 4052 + 4053 + {"tlbie", X(31,306), X_MASK|1<<20,POWER9, TITAN, {RB, RS, RIC, PRS, X_R}}, 4054 + {"tlbie", X(31,306), XRA_MASK, POWER7, POWER9|TITAN, {RB, RS}}, 4055 + {"tlbie", X(31,306), XRTLRA_MASK, PPC, E500|POWER7|TITAN, {RB, LOPT}}, 4056 + {"tlbi", X(31,306), XRT_MASK, POWER, 0, {RA0, RB}}, 4057 + 4058 + {"mfvsrld", X(31,307), XX1RB_MASK, PPCVSX3, 0, {RA, XS6}}, 4059 + 4060 + {"ldmx", X(31,309), X_MASK, POWER9, 0, {RT, RA0, RB}}, 4061 + 4062 + {"eciwx", X(31,310), X_MASK, PPC, E500|TITAN, {RT, RA0, RB}}, 4063 + 4064 + {"lhzux", X(31,311), X_MASK, COM, 0, {RT, RAL, RB}}, 4065 + 4066 + {"cbcdtd", X(31,314), XRB_MASK, POWER6, 0, {RA, RS}}, 4067 + 4068 + {"xor", XRC(31,316,0), X_MASK, COM, 0, {RA, RS, RB}}, 4069 + {"xor.", XRC(31,316,1), X_MASK, COM, 0, {RA, RS, RB}}, 4070 + 4071 + {"dcbtep", XRT(31,319,0), X_MASK, E500MC|PPCA2, 0, {RT, RA0, RB}}, 4072 + 4073 + {"mfexisr", XSPR(31,323, 64), XSPR_MASK, PPC403, 0, {RT}}, 4074 + {"mfexier", XSPR(31,323, 66), XSPR_MASK, PPC403, 0, {RT}}, 4075 + {"mfbr0", XSPR(31,323,128), XSPR_MASK, PPC403, 0, {RT}}, 4076 + {"mfbr1", XSPR(31,323,129), XSPR_MASK, PPC403, 0, {RT}}, 4077 + {"mfbr2", XSPR(31,323,130), XSPR_MASK, PPC403, 0, {RT}}, 4078 + {"mfbr3", XSPR(31,323,131), XSPR_MASK, PPC403, 0, {RT}}, 4079 + {"mfbr4", XSPR(31,323,132), XSPR_MASK, PPC403, 0, {RT}}, 4080 + {"mfbr5", XSPR(31,323,133), XSPR_MASK, PPC403, 0, {RT}}, 4081 + {"mfbr6", XSPR(31,323,134), XSPR_MASK, PPC403, 0, {RT}}, 4082 + {"mfbr7", XSPR(31,323,135), XSPR_MASK, PPC403, 0, {RT}}, 4083 + {"mfbear", XSPR(31,323,144), XSPR_MASK, PPC403, 0, {RT}}, 4084 + {"mfbesr", XSPR(31,323,145), XSPR_MASK, PPC403, 0, {RT}}, 4085 + {"mfiocr", XSPR(31,323,160), XSPR_MASK, PPC403, 0, {RT}}, 4086 + {"mfdmacr0", XSPR(31,323,192), XSPR_MASK, PPC403, 0, {RT}}, 4087 + {"mfdmact0", XSPR(31,323,193), XSPR_MASK, PPC403, 0, {RT}}, 4088 + {"mfdmada0", XSPR(31,323,194), XSPR_MASK, PPC403, 0, {RT}}, 4089 + {"mfdmasa0", XSPR(31,323,195), XSPR_MASK, PPC403, 0, {RT}}, 4090 + {"mfdmacc0", XSPR(31,323,196), XSPR_MASK, PPC403, 0, {RT}}, 4091 + {"mfdmacr1", XSPR(31,323,200), XSPR_MASK, PPC403, 0, {RT}}, 4092 + {"mfdmact1", XSPR(31,323,201), XSPR_MASK, PPC403, 0, {RT}}, 4093 + {"mfdmada1", XSPR(31,323,202), XSPR_MASK, PPC403, 0, {RT}}, 4094 + {"mfdmasa1", XSPR(31,323,203), XSPR_MASK, PPC403, 0, {RT}}, 4095 + {"mfdmacc1", XSPR(31,323,204), XSPR_MASK, PPC403, 0, {RT}}, 4096 + {"mfdmacr2", XSPR(31,323,208), XSPR_MASK, PPC403, 0, {RT}}, 4097 + {"mfdmact2", XSPR(31,323,209), XSPR_MASK, PPC403, 0, {RT}}, 4098 + {"mfdmada2", XSPR(31,323,210), XSPR_MASK, PPC403, 0, {RT}}, 4099 + {"mfdmasa2", XSPR(31,323,211), XSPR_MASK, PPC403, 0, {RT}}, 4100 + {"mfdmacc2", XSPR(31,323,212), XSPR_MASK, PPC403, 0, {RT}}, 4101 + {"mfdmacr3", XSPR(31,323,216), XSPR_MASK, PPC403, 0, {RT}}, 4102 + {"mfdmact3", XSPR(31,323,217), XSPR_MASK, PPC403, 0, {RT}}, 4103 + {"mfdmada3", XSPR(31,323,218), XSPR_MASK, PPC403, 0, {RT}}, 4104 + {"mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, 0, {RT}}, 4105 + {"mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, 0, {RT}}, 4106 + {"mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, 0, {RT}}, 4107 + {"mfdcr", X(31,323), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {RT, SPR}}, 4108 + {"mfdcr.", XRC(31,323,1), X_MASK, PPCA2, 0, {RT, SPR}}, 4109 + 4110 + {"lvexwx", X(31,325), X_MASK, PPCVEC2, 0, {VD, RA0, RB}}, 4111 + 4112 + {"dcread", X(31,326), X_MASK, PPC476|TITAN, 0, {RT, RA0, RB}}, 4113 + 4114 + {"div", XO(31,331,0,0), XO_MASK, M601, 0, {RT, RA, RB}}, 4115 + {"div.", XO(31,331,0,1), XO_MASK, M601, 0, {RT, RA, RB}}, 4116 + 4117 + {"lxvdsx", X(31,332), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}}, 4118 + 4119 + {"mfpmr", X(31,334), X_MASK, PPCPMR|PPCE300, 0, {RT, PMR}}, 4120 + {"mftmr", X(31,366), X_MASK, PPCTMR|E6500, 0, {RT, TMR}}, 4121 + 4122 + {"slbsync", X(31,338), 0xffffffff, POWER9, 0, {0}}, 4123 + 4124 + {"mfmq", XSPR(31,339, 0), XSPR_MASK, M601, 0, {RT}}, 4125 + {"mfxer", XSPR(31,339, 1), XSPR_MASK, COM, 0, {RT}}, 4126 + {"mfrtcu", XSPR(31,339, 4), XSPR_MASK, COM, TITAN, {RT}}, 4127 + {"mfrtcl", XSPR(31,339, 5), XSPR_MASK, COM, TITAN, {RT}}, 4128 + {"mfdec", XSPR(31,339, 6), XSPR_MASK, MFDEC1, 0, {RT}}, 4129 + {"mflr", XSPR(31,339, 8), XSPR_MASK, COM, 0, {RT}}, 4130 + {"mfctr", XSPR(31,339, 9), XSPR_MASK, COM, 0, {RT}}, 4131 + {"mfdscr", XSPR(31,339, 17), XSPR_MASK, POWER6, 0, {RT}}, 4132 + {"mftid", XSPR(31,339, 17), XSPR_MASK, POWER, 0, {RT}}, 4133 + {"mfdsisr", XSPR(31,339, 18), XSPR_MASK, COM, TITAN, {RT}}, 4134 + {"mfdar", XSPR(31,339, 19), XSPR_MASK, COM, TITAN, {RT}}, 4135 + {"mfdec", XSPR(31,339, 22), XSPR_MASK, MFDEC2, MFDEC1, {RT}}, 4136 + {"mfsdr0", XSPR(31,339, 24), XSPR_MASK, POWER, 0, {RT}}, 4137 + {"mfsdr1", XSPR(31,339, 25), XSPR_MASK, COM, TITAN, {RT}}, 4138 + {"mfsrr0", XSPR(31,339, 26), XSPR_MASK, COM, 0, {RT}}, 4139 + {"mfsrr1", XSPR(31,339, 27), XSPR_MASK, COM, 0, {RT}}, 4140 + {"mfcfar", XSPR(31,339, 28), XSPR_MASK, POWER6, 0, {RT}}, 4141 + {"mfpid", XSPR(31,339, 48), XSPR_MASK, BOOKE, 0, {RT}}, 4142 + {"mfcsrr0", XSPR(31,339, 58), XSPR_MASK, BOOKE, 0, {RT}}, 4143 + {"mfcsrr1", XSPR(31,339, 59), XSPR_MASK, BOOKE, 0, {RT}}, 4144 + {"mfdear", XSPR(31,339, 61), XSPR_MASK, BOOKE, 0, {RT}}, 4145 + {"mfesr", XSPR(31,339, 62), XSPR_MASK, BOOKE, 0, {RT}}, 4146 + {"mfivpr", XSPR(31,339, 63), XSPR_MASK, BOOKE, 0, {RT}}, 4147 + {"mfctrl", XSPR(31,339,136), XSPR_MASK, POWER4, 0, {RT}}, 4148 + {"mfcmpa", XSPR(31,339,144), XSPR_MASK, PPC860, 0, {RT}}, 4149 + {"mfcmpb", XSPR(31,339,145), XSPR_MASK, PPC860, 0, {RT}}, 4150 + {"mfcmpc", XSPR(31,339,146), XSPR_MASK, PPC860, 0, {RT}}, 4151 + {"mfcmpd", XSPR(31,339,147), XSPR_MASK, PPC860, 0, {RT}}, 4152 + {"mficr", XSPR(31,339,148), XSPR_MASK, PPC860, 0, {RT}}, 4153 + {"mfder", XSPR(31,339,149), XSPR_MASK, PPC860, 0, {RT}}, 4154 + {"mfcounta", XSPR(31,339,150), XSPR_MASK, PPC860, 0, {RT}}, 4155 + {"mfcountb", XSPR(31,339,151), XSPR_MASK, PPC860, 0, {RT}}, 4156 + {"mfcmpe", XSPR(31,339,152), XSPR_MASK, PPC860, 0, {RT}}, 4157 + {"mfcmpf", XSPR(31,339,153), XSPR_MASK, PPC860, 0, {RT}}, 4158 + {"mfcmpg", XSPR(31,339,154), XSPR_MASK, PPC860, 0, {RT}}, 4159 + {"mfcmph", XSPR(31,339,155), XSPR_MASK, PPC860, 0, {RT}}, 4160 + {"mflctrl1", XSPR(31,339,156), XSPR_MASK, PPC860, 0, {RT}}, 4161 + {"mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, 0, {RT}}, 4162 + {"mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, 0, {RT}}, 4163 + {"mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, 0, {RT}}, 4164 + {"mfvrsave", XSPR(31,339,256), XSPR_MASK, PPCVEC, 0, {RT}}, 4165 + {"mfusprg0", XSPR(31,339,256), XSPR_MASK, BOOKE, 0, {RT}}, 4166 + {"mfsprg", XSPR(31,339,256), XSPRG_MASK, PPC, 0, {RT, SPRG}}, 4167 + {"mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405|BOOKE, 0, {RT}}, 4168 + {"mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405|BOOKE, 0, {RT}}, 4169 + {"mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405|BOOKE, 0, {RT}}, 4170 + {"mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405|BOOKE, 0, {RT}}, 4171 + {"mftbu", XSPR(31,339,269), XSPR_MASK, POWER4|BOOKE, 0, {RT}}, 4172 + {"mftb", X(31,339), X_MASK, POWER4|BOOKE, 0, {RT, TBR}}, 4173 + {"mftbl", XSPR(31,339,268), XSPR_MASK, POWER4|BOOKE, 0, {RT}}, 4174 + {"mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, 0, {RT}}, 4175 + {"mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, 0, {RT}}, 4176 + {"mfsprg2", XSPR(31,339,274), XSPR_MASK, PPC, 0, {RT}}, 4177 + {"mfsprg3", XSPR(31,339,275), XSPR_MASK, PPC, 0, {RT}}, 4178 + {"mfasr", XSPR(31,339,280), XSPR_MASK, PPC64, 0, {RT}}, 4179 + {"mfear", XSPR(31,339,282), XSPR_MASK, PPC, TITAN, {RT}}, 4180 + {"mfpir", XSPR(31,339,286), XSPR_MASK, BOOKE, 0, {RT}}, 4181 + {"mfpvr", XSPR(31,339,287), XSPR_MASK, PPC, 0, {RT}}, 4182 + {"mfdbsr", XSPR(31,339,304), XSPR_MASK, BOOKE, 0, {RT}}, 4183 + {"mfdbcr0", XSPR(31,339,308), XSPR_MASK, BOOKE, 0, {RT}}, 4184 + {"mfdbcr1", XSPR(31,339,309), XSPR_MASK, BOOKE, 0, {RT}}, 4185 + {"mfdbcr2", XSPR(31,339,310), XSPR_MASK, BOOKE, 0, {RT}}, 4186 + {"mfiac1", XSPR(31,339,312), XSPR_MASK, BOOKE, 0, {RT}}, 4187 + {"mfiac2", XSPR(31,339,313), XSPR_MASK, BOOKE, 0, {RT}}, 4188 + {"mfiac3", XSPR(31,339,314), XSPR_MASK, BOOKE, 0, {RT}}, 4189 + {"mfiac4", XSPR(31,339,315), XSPR_MASK, BOOKE, 0, {RT}}, 4190 + {"mfdac1", XSPR(31,339,316), XSPR_MASK, BOOKE, 0, {RT}}, 4191 + {"mfdac2", XSPR(31,339,317), XSPR_MASK, BOOKE, 0, {RT}}, 4192 + {"mfdvc1", XSPR(31,339,318), XSPR_MASK, BOOKE, 0, {RT}}, 4193 + {"mfdvc2", XSPR(31,339,319), XSPR_MASK, BOOKE, 0, {RT}}, 4194 + {"mftsr", XSPR(31,339,336), XSPR_MASK, BOOKE, 0, {RT}}, 4195 + {"mftcr", XSPR(31,339,340), XSPR_MASK, BOOKE, 0, {RT}}, 4196 + {"mfivor0", XSPR(31,339,400), XSPR_MASK, BOOKE, 0, {RT}}, 4197 + {"mfivor1", XSPR(31,339,401), XSPR_MASK, BOOKE, 0, {RT}}, 4198 + {"mfivor2", XSPR(31,339,402), XSPR_MASK, BOOKE, 0, {RT}}, 4199 + {"mfivor3", XSPR(31,339,403), XSPR_MASK, BOOKE, 0, {RT}}, 4200 + {"mfivor4", XSPR(31,339,404), XSPR_MASK, BOOKE, 0, {RT}}, 4201 + {"mfivor5", XSPR(31,339,405), XSPR_MASK, BOOKE, 0, {RT}}, 4202 + {"mfivor6", XSPR(31,339,406), XSPR_MASK, BOOKE, 0, {RT}}, 4203 + {"mfivor7", XSPR(31,339,407), XSPR_MASK, BOOKE, 0, {RT}}, 4204 + {"mfivor8", XSPR(31,339,408), XSPR_MASK, BOOKE, 0, {RT}}, 4205 + {"mfivor9", XSPR(31,339,409), XSPR_MASK, BOOKE, 0, {RT}}, 4206 + {"mfivor10", XSPR(31,339,410), XSPR_MASK, BOOKE, 0, {RT}}, 4207 + {"mfivor11", XSPR(31,339,411), XSPR_MASK, BOOKE, 0, {RT}}, 4208 + {"mfivor12", XSPR(31,339,412), XSPR_MASK, BOOKE, 0, {RT}}, 4209 + {"mfivor13", XSPR(31,339,413), XSPR_MASK, BOOKE, 0, {RT}}, 4210 + {"mfivor14", XSPR(31,339,414), XSPR_MASK, BOOKE, 0, {RT}}, 4211 + {"mfivor15", XSPR(31,339,415), XSPR_MASK, BOOKE, 0, {RT}}, 4212 + {"mfspefscr", XSPR(31,339,512), XSPR_MASK, PPCSPE, 0, {RT}}, 4213 + {"mfbbear", XSPR(31,339,513), XSPR_MASK, PPCBRLK, 0, {RT}}, 4214 + {"mfbbtar", XSPR(31,339,514), XSPR_MASK, PPCBRLK, 0, {RT}}, 4215 + {"mfivor32", XSPR(31,339,528), XSPR_MASK, PPCSPE, 0, {RT}}, 4216 + {"mfibatu", XSPR(31,339,528), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}}, 4217 + {"mfivor33", XSPR(31,339,529), XSPR_MASK, PPCSPE, 0, {RT}}, 4218 + {"mfibatl", XSPR(31,339,529), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}}, 4219 + {"mfivor34", XSPR(31,339,530), XSPR_MASK, PPCSPE, 0, {RT}}, 4220 + {"mfivor35", XSPR(31,339,531), XSPR_MASK, PPCPMR, 0, {RT}}, 4221 + {"mfdbatu", XSPR(31,339,536), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}}, 4222 + {"mfdbatl", XSPR(31,339,537), XSPRBAT_MASK, PPC, TITAN, {RT, SPRBAT}}, 4223 + {"mfic_cst", XSPR(31,339,560), XSPR_MASK, PPC860, 0, {RT}}, 4224 + {"mfic_adr", XSPR(31,339,561), XSPR_MASK, PPC860, 0, {RT}}, 4225 + {"mfic_dat", XSPR(31,339,562), XSPR_MASK, PPC860, 0, {RT}}, 4226 + {"mfdc_cst", XSPR(31,339,568), XSPR_MASK, PPC860, 0, {RT}}, 4227 + {"mfdc_adr", XSPR(31,339,569), XSPR_MASK, PPC860, 0, {RT}}, 4228 + {"mfdc_dat", XSPR(31,339,570), XSPR_MASK, PPC860, 0, {RT}}, 4229 + {"mfmcsrr0", XSPR(31,339,570), XSPR_MASK, PPCRFMCI, 0, {RT}}, 4230 + {"mfmcsrr1", XSPR(31,339,571), XSPR_MASK, PPCRFMCI, 0, {RT}}, 4231 + {"mfmcsr", XSPR(31,339,572), XSPR_MASK, PPCRFMCI, 0, {RT}}, 4232 + {"mfmcar", XSPR(31,339,573), XSPR_MASK, PPCRFMCI, TITAN, {RT}}, 4233 + {"mfdpdr", XSPR(31,339,630), XSPR_MASK, PPC860, 0, {RT}}, 4234 + {"mfdpir", XSPR(31,339,631), XSPR_MASK, PPC860, 0, {RT}}, 4235 + {"mfimmr", XSPR(31,339,638), XSPR_MASK, PPC860, 0, {RT}}, 4236 + {"mfmi_ctr", XSPR(31,339,784), XSPR_MASK, PPC860, 0, {RT}}, 4237 + {"mfmi_ap", XSPR(31,339,786), XSPR_MASK, PPC860, 0, {RT}}, 4238 + {"mfmi_epn", XSPR(31,339,787), XSPR_MASK, PPC860, 0, {RT}}, 4239 + {"mfmi_twc", XSPR(31,339,789), XSPR_MASK, PPC860, 0, {RT}}, 4240 + {"mfmi_rpn", XSPR(31,339,790), XSPR_MASK, PPC860, 0, {RT}}, 4241 + {"mfmd_ctr", XSPR(31,339,792), XSPR_MASK, PPC860, 0, {RT}}, 4242 + {"mfm_casid", XSPR(31,339,793), XSPR_MASK, PPC860, 0, {RT}}, 4243 + {"mfmd_ap", XSPR(31,339,794), XSPR_MASK, PPC860, 0, {RT}}, 4244 + {"mfmd_epn", XSPR(31,339,795), XSPR_MASK, PPC860, 0, {RT}}, 4245 + {"mfmd_twb", XSPR(31,339,796), XSPR_MASK, PPC860, 0, {RT}}, 4246 + {"mfmd_twc", XSPR(31,339,797), XSPR_MASK, PPC860, 0, {RT}}, 4247 + {"mfmd_rpn", XSPR(31,339,798), XSPR_MASK, PPC860, 0, {RT}}, 4248 + {"mfm_tw", XSPR(31,339,799), XSPR_MASK, PPC860, 0, {RT}}, 4249 + {"mfmi_dbcam", XSPR(31,339,816), XSPR_MASK, PPC860, 0, {RT}}, 4250 + {"mfmi_dbram0", XSPR(31,339,817), XSPR_MASK, PPC860, 0, {RT}}, 4251 + {"mfmi_dbram1", XSPR(31,339,818), XSPR_MASK, PPC860, 0, {RT}}, 4252 + {"mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, 0, {RT}}, 4253 + {"mfmd_dbram0", XSPR(31,339,825), XSPR_MASK, PPC860, 0, {RT}}, 4254 + {"mfmd_dbram1", XSPR(31,339,826), XSPR_MASK, PPC860, 0, {RT}}, 4255 + {"mfivndx", XSPR(31,339,880), XSPR_MASK, TITAN, 0, {RT}}, 4256 + {"mfdvndx", XSPR(31,339,881), XSPR_MASK, TITAN, 0, {RT}}, 4257 + {"mfivlim", XSPR(31,339,882), XSPR_MASK, TITAN, 0, {RT}}, 4258 + {"mfdvlim", XSPR(31,339,883), XSPR_MASK, TITAN, 0, {RT}}, 4259 + {"mfclcsr", XSPR(31,339,884), XSPR_MASK, TITAN, 0, {RT}}, 4260 + {"mfccr1", XSPR(31,339,888), XSPR_MASK, TITAN, 0, {RT}}, 4261 + {"mfppr", XSPR(31,339,896), XSPR_MASK, POWER7, 0, {RT}}, 4262 + {"mfppr32", XSPR(31,339,898), XSPR_MASK, POWER7, 0, {RT}}, 4263 + {"mfrstcfg", XSPR(31,339,923), XSPR_MASK, TITAN, 0, {RT}}, 4264 + {"mfdcdbtrl", XSPR(31,339,924), XSPR_MASK, TITAN, 0, {RT}}, 4265 + {"mfdcdbtrh", XSPR(31,339,925), XSPR_MASK, TITAN, 0, {RT}}, 4266 + {"mficdbtr", XSPR(31,339,927), XSPR_MASK, TITAN, 0, {RT}}, 4267 + {"mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, 0, {RT}}, 4268 + {"mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, 0, {RT}}, 4269 + {"mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, 0, {RT}}, 4270 + {"mfusia", XSPR(31,339,939), XSPR_MASK, PPC750, 0, {RT}}, 4271 + {"mfummcr1", XSPR(31,339,940), XSPR_MASK, PPC750, 0, {RT}}, 4272 + {"mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750, 0, {RT}}, 4273 + {"mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, 0, {RT}}, 4274 + {"mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, 0, {RT}}, 4275 + {"mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, 0, {RT}}, 4276 + {"mfmmucr", XSPR(31,339,946), XSPR_MASK, TITAN, 0, {RT}}, 4277 + {"mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405|TITAN, 0, {RT}}, 4278 + {"mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, 0, {RT}}, 4279 + {"mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, 0, {RT}}, 4280 + {"mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, 0, {RT}}, 4281 + {"mfdvc2", XSPR(31,339,951), XSPR_MASK, PPC405, 0, {RT}}, 4282 + {"mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750, 0, {RT}}, 4283 + {"mfpmc1", XSPR(31,339,953), XSPR_MASK, PPC750, 0, {RT}}, 4284 + {"mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403, 0, {RT}}, 4285 + {"mfdcwr", XSPR(31,339,954), XSPR_MASK, PPC403, 0, {RT}}, 4286 + {"mfpmc2", XSPR(31,339,954), XSPR_MASK, PPC750, 0, {RT}}, 4287 + {"mfsia", XSPR(31,339,955), XSPR_MASK, PPC750, 0, {RT}}, 4288 + {"mfsler", XSPR(31,339,955), XSPR_MASK, PPC405, 0, {RT}}, 4289 + {"mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750, 0, {RT}}, 4290 + {"mfsu0r", XSPR(31,339,956), XSPR_MASK, PPC405, 0, {RT}}, 4291 + {"mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, 0, {RT}}, 4292 + {"mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, 0, {RT}}, 4293 + {"mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, 0, {RT}}, 4294 + {"mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403|TITAN, 0, {RT}}, 4295 + {"mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, 0, {RT}}, 4296 + {"mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, 0, {RT}}, 4297 + {"mfevpr", XSPR(31,339,982), XSPR_MASK, PPC403, 0, {RT}}, 4298 + {"mfcdbcr", XSPR(31,339,983), XSPR_MASK, PPC403, 0, {RT}}, 4299 + {"mftsr", XSPR(31,339,984), XSPR_MASK, PPC403, 0, {RT}}, 4300 + {"mftcr", XSPR(31,339,986), XSPR_MASK, PPC403, 0, {RT}}, 4301 + {"mfpit", XSPR(31,339,987), XSPR_MASK, PPC403, 0, {RT}}, 4302 + {"mftbhi", XSPR(31,339,988), XSPR_MASK, PPC403, 0, {RT}}, 4303 + {"mftblo", XSPR(31,339,989), XSPR_MASK, PPC403, 0, {RT}}, 4304 + {"mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, 0, {RT}}, 4305 + {"mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, 0, {RT}}, 4306 + {"mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, 0, {RT}}, 4307 + {"mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, 0, {RT}}, 4308 + {"mfdbdr", XSPR(31,339,1011), XSPR_MASK, TITAN, 0, {RS}}, 4309 + {"mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, 0, {RT}}, 4310 + {"mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, 0, {RT}}, 4311 + {"mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, 0, {RT}}, 4312 + {"mfdac2", XSPR(31,339,1015), XSPR_MASK, PPC403, 0, {RT}}, 4313 + {"mfl2cr", XSPR(31,339,1017), XSPR_MASK, PPC750, 0, {RT}}, 4314 + {"mfdccr", XSPR(31,339,1018), XSPR_MASK, PPC403, 0, {RT}}, 4315 + {"mficcr", XSPR(31,339,1019), XSPR_MASK, PPC403, 0, {RT}}, 4316 + {"mfictc", XSPR(31,339,1019), XSPR_MASK, PPC750, 0, {RT}}, 4317 + {"mfpbl1", XSPR(31,339,1020), XSPR_MASK, PPC403, 0, {RT}}, 4318 + {"mfthrm1", XSPR(31,339,1020), XSPR_MASK, PPC750, 0, {RT}}, 4319 + {"mfpbu1", XSPR(31,339,1021), XSPR_MASK, PPC403, 0, {RT}}, 4320 + {"mfthrm2", XSPR(31,339,1021), XSPR_MASK, PPC750, 0, {RT}}, 4321 + {"mfpbl2", XSPR(31,339,1022), XSPR_MASK, PPC403, 0, {RT}}, 4322 + {"mfthrm3", XSPR(31,339,1022), XSPR_MASK, PPC750, 0, {RT}}, 4323 + {"mfpbu2", XSPR(31,339,1023), XSPR_MASK, PPC403, 0, {RT}}, 4324 + {"mfspr", X(31,339), X_MASK, COM, 0, {RT, SPR}}, 4325 + 4326 + {"lwax", X(31,341), X_MASK, PPC64, 0, {RT, RA0, RB}}, 4327 + 4328 + {"dst", XDSS(31,342,0), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}}, 4329 + 4330 + {"lhax", X(31,343), X_MASK, COM, 0, {RT, RA0, RB}}, 4331 + 4332 + {"lvxl", X(31,359), X_MASK, PPCVEC, 0, {VD, RA0, RB}}, 4333 + 4334 + {"abs", XO(31,360,0,0), XORB_MASK, M601, 0, {RT, RA}}, 4335 + {"abs.", XO(31,360,0,1), XORB_MASK, M601, 0, {RT, RA}}, 4336 + 4337 + {"divs", XO(31,363,0,0), XO_MASK, M601, 0, {RT, RA, RB}}, 4338 + {"divs.", XO(31,363,0,1), XO_MASK, M601, 0, {RT, RA, RB}}, 4339 + 4340 + {"lxvwsx", X(31,364), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}}, 4341 + 4342 + {"tlbia", X(31,370), 0xffffffff, PPC, E500|TITAN, {0}}, 4343 + 4344 + {"mftbu", XSPR(31,371,269), XSPR_MASK, PPC, NO371|POWER4, {RT}}, 4345 + {"mftb", X(31,371), X_MASK, PPC, NO371|POWER4, {RT, TBR}}, 4346 + {"mftbl", XSPR(31,371,268), XSPR_MASK, PPC, NO371|POWER4, {RT}}, 4347 + 4348 + {"lwaux", X(31,373), X_MASK, PPC64, 0, {RT, RAL, RB}}, 4349 + 4350 + {"dstst", XDSS(31,374,0), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}}, 4351 + 4352 + {"lhaux", X(31,375), X_MASK, COM, 0, {RT, RAL, RB}}, 4353 + 4354 + {"popcntw", X(31,378), XRB_MASK, POWER7|PPCA2, 0, {RA, RS}}, 4355 + 4356 + {"mtdcrx", X(31,387), X_MASK, BOOKE|PPCA2|PPC476, TITAN, {RA, RS}}, 4357 + {"mtdcrx.", XRC(31,387,1), X_MASK, PPCA2, 0, {RA, RS}}, 4358 + 4359 + {"stvexbx", X(31,389), X_MASK, PPCVEC2, 0, {VS, RA0, RB}}, 4360 + 4361 + {"dcblc", X(31,390), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}}, 4362 + {"stdfcmx", APU(31,391,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 4363 + 4364 + {"divdeu", XO(31,393,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 4365 + {"divdeu.", XO(31,393,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 4366 + {"divweu", XO(31,395,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 4367 + {"divweu.", XO(31,395,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 4368 + 4369 + {"stxvx", X(31,396), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}}, 4370 + {"stxvl", X(31,397), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}}, 4371 + 4372 + {"dcblce", X(31,398), X_MASK, PPCCHLK, E500MC, {CT, RA, RB}}, 4373 + 4374 + {"slbmte", X(31,402), XRA_MASK, PPC64, 0, {RS, RB}}, 4375 + 4376 + {"mtvsrws", X(31,403), XX1RB_MASK, PPCVSX3, 0, {XT6, RA}}, 4377 + 4378 + {"pbt.", XRC(31,404,1), X_MASK, POWER8, 0, {RS, RA0, RB}}, 4379 + 4380 + {"icswx", XRC(31,406,0), X_MASK, POWER7|PPCA2, 0, {RS, RA, RB}}, 4381 + {"icswx.", XRC(31,406,1), X_MASK, POWER7|PPCA2, 0, {RS, RA, RB}}, 4382 + 4383 + {"sthx", X(31,407), X_MASK, COM, 0, {RS, RA0, RB}}, 4384 + 4385 + {"orc", XRC(31,412,0), X_MASK, COM, 0, {RA, RS, RB}}, 4386 + {"orc.", XRC(31,412,1), X_MASK, COM, 0, {RA, RS, RB}}, 4387 + 4388 + {"sthepx", X(31,415), X_MASK, E500MC|PPCA2, 0, {RS, RA0, RB}}, 4389 + 4390 + {"mtdcrux", X(31,419), X_MASK, PPC464, 0, {RA, RS}}, 4391 + 4392 + {"stvexhx", X(31,421), X_MASK, PPCVEC2, 0, {VS, RA0, RB}}, 4393 + 4394 + {"dcblq.", XRC(31,422,1), X_MASK, E6500, 0, {CT, RA0, RB}}, 4395 + 4396 + {"divde", XO(31,425,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 4397 + {"divde.", XO(31,425,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 4398 + {"divwe", XO(31,427,0,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 4399 + {"divwe.", XO(31,427,0,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 4400 + 4401 + {"stxvll", X(31,429), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}}, 4402 + 4403 + {"clrbhrb", X(31,430), 0xffffffff, POWER8, 0, {0}}, 4404 + 4405 + {"slbie", X(31,434), XRTRA_MASK, PPC64, 0, {RB}}, 4406 + 4407 + {"mtvsrdd", X(31,435), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}}, 4408 + 4409 + {"ecowx", X(31,438), X_MASK, PPC, E500|TITAN, {RT, RA0, RB}}, 4410 + 4411 + {"sthux", X(31,439), X_MASK, COM, 0, {RS, RAS, RB}}, 4412 + 4413 + {"mdors", 0x7f9ce378, 0xffffffff, E500MC, 0, {0}}, 4414 + 4415 + {"miso", 0x7f5ad378, 0xffffffff, E6500, 0, {0}}, 4416 + 4417 + /* The "yield", "mdoio" and "mdoom" instructions are extended mnemonics for 4418 + "or rX,rX,rX", with rX being r27, r29 and r30 respectively. */ 4419 + {"yield", 0x7f7bdb78, 0xffffffff, POWER7, 0, {0}}, 4420 + {"mdoio", 0x7fbdeb78, 0xffffffff, POWER7, 0, {0}}, 4421 + {"mdoom", 0x7fdef378, 0xffffffff, POWER7, 0, {0}}, 4422 + {"mr", XRC(31,444,0), X_MASK, COM, 0, {RA, RS, RBS}}, 4423 + {"or", XRC(31,444,0), X_MASK, COM, 0, {RA, RS, RB}}, 4424 + {"mr.", XRC(31,444,1), X_MASK, COM, 0, {RA, RS, RBS}}, 4425 + {"or.", XRC(31,444,1), X_MASK, COM, 0, {RA, RS, RB}}, 4426 + 4427 + {"mtexisr", XSPR(31,451, 64), XSPR_MASK, PPC403, 0, {RS}}, 4428 + {"mtexier", XSPR(31,451, 66), XSPR_MASK, PPC403, 0, {RS}}, 4429 + {"mtbr0", XSPR(31,451,128), XSPR_MASK, PPC403, 0, {RS}}, 4430 + {"mtbr1", XSPR(31,451,129), XSPR_MASK, PPC403, 0, {RS}}, 4431 + {"mtbr2", XSPR(31,451,130), XSPR_MASK, PPC403, 0, {RS}}, 4432 + {"mtbr3", XSPR(31,451,131), XSPR_MASK, PPC403, 0, {RS}}, 4433 + {"mtbr4", XSPR(31,451,132), XSPR_MASK, PPC403, 0, {RS}}, 4434 + {"mtbr5", XSPR(31,451,133), XSPR_MASK, PPC403, 0, {RS}}, 4435 + {"mtbr6", XSPR(31,451,134), XSPR_MASK, PPC403, 0, {RS}}, 4436 + {"mtbr7", XSPR(31,451,135), XSPR_MASK, PPC403, 0, {RS}}, 4437 + {"mtbear", XSPR(31,451,144), XSPR_MASK, PPC403, 0, {RS}}, 4438 + {"mtbesr", XSPR(31,451,145), XSPR_MASK, PPC403, 0, {RS}}, 4439 + {"mtiocr", XSPR(31,451,160), XSPR_MASK, PPC403, 0, {RS}}, 4440 + {"mtdmacr0", XSPR(31,451,192), XSPR_MASK, PPC403, 0, {RS}}, 4441 + {"mtdmact0", XSPR(31,451,193), XSPR_MASK, PPC403, 0, {RS}}, 4442 + {"mtdmada0", XSPR(31,451,194), XSPR_MASK, PPC403, 0, {RS}}, 4443 + {"mtdmasa0", XSPR(31,451,195), XSPR_MASK, PPC403, 0, {RS}}, 4444 + {"mtdmacc0", XSPR(31,451,196), XSPR_MASK, PPC403, 0, {RS}}, 4445 + {"mtdmacr1", XSPR(31,451,200), XSPR_MASK, PPC403, 0, {RS}}, 4446 + {"mtdmact1", XSPR(31,451,201), XSPR_MASK, PPC403, 0, {RS}}, 4447 + {"mtdmada1", XSPR(31,451,202), XSPR_MASK, PPC403, 0, {RS}}, 4448 + {"mtdmasa1", XSPR(31,451,203), XSPR_MASK, PPC403, 0, {RS}}, 4449 + {"mtdmacc1", XSPR(31,451,204), XSPR_MASK, PPC403, 0, {RS}}, 4450 + {"mtdmacr2", XSPR(31,451,208), XSPR_MASK, PPC403, 0, {RS}}, 4451 + {"mtdmact2", XSPR(31,451,209), XSPR_MASK, PPC403, 0, {RS}}, 4452 + {"mtdmada2", XSPR(31,451,210), XSPR_MASK, PPC403, 0, {RS}}, 4453 + {"mtdmasa2", XSPR(31,451,211), XSPR_MASK, PPC403, 0, {RS}}, 4454 + {"mtdmacc2", XSPR(31,451,212), XSPR_MASK, PPC403, 0, {RS}}, 4455 + {"mtdmacr3", XSPR(31,451,216), XSPR_MASK, PPC403, 0, {RS}}, 4456 + {"mtdmact3", XSPR(31,451,217), XSPR_MASK, PPC403, 0, {RS}}, 4457 + {"mtdmada3", XSPR(31,451,218), XSPR_MASK, PPC403, 0, {RS}}, 4458 + {"mtdmasa3", XSPR(31,451,219), XSPR_MASK, PPC403, 0, {RS}}, 4459 + {"mtdmacc3", XSPR(31,451,220), XSPR_MASK, PPC403, 0, {RS}}, 4460 + {"mtdmasr", XSPR(31,451,224), XSPR_MASK, PPC403, 0, {RS}}, 4461 + {"mtdcr", X(31,451), X_MASK, PPC403|BOOKE|PPCA2|PPC476, E500|TITAN, {SPR, RS}}, 4462 + {"mtdcr.", XRC(31,451,1), X_MASK, PPCA2, 0, {SPR, RS}}, 4463 + 4464 + {"stvexwx", X(31,453), X_MASK, PPCVEC2, 0, {VS, RA0, RB}}, 4465 + 4466 + {"dccci", X(31,454), XRT_MASK, PPC403|PPC440|TITAN|PPCA2, 0, {RAOPT, RBOPT}}, 4467 + {"dci", X(31,454), XRARB_MASK, PPCA2|PPC476, 0, {CT}}, 4468 + 4469 + {"divdu", XO(31,457,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}}, 4470 + {"divdu.", XO(31,457,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}}, 4471 + 4472 + {"divwu", XO(31,459,0,0), XO_MASK, PPC, 0, {RT, RA, RB}}, 4473 + {"divwu.", XO(31,459,0,1), XO_MASK, PPC, 0, {RT, RA, RB}}, 4474 + 4475 + {"mtpmr", X(31,462), X_MASK, PPCPMR|PPCE300, 0, {PMR, RS}}, 4476 + {"mttmr", X(31,494), X_MASK, PPCTMR|E6500, 0, {TMR, RS}}, 4477 + 4478 + {"slbieg", X(31,466), XRA_MASK, POWER9, 0, {RS, RB}}, 4479 + 4480 + {"mtmq", XSPR(31,467, 0), XSPR_MASK, M601, 0, {RS}}, 4481 + {"mtxer", XSPR(31,467, 1), XSPR_MASK, COM, 0, {RS}}, 4482 + {"mtlr", XSPR(31,467, 8), XSPR_MASK, COM, 0, {RS}}, 4483 + {"mtctr", XSPR(31,467, 9), XSPR_MASK, COM, 0, {RS}}, 4484 + {"mtdscr", XSPR(31,467, 17), XSPR_MASK, POWER6, 0, {RS}}, 4485 + {"mttid", XSPR(31,467, 17), XSPR_MASK, POWER, 0, {RS}}, 4486 + {"mtdsisr", XSPR(31,467, 18), XSPR_MASK, COM, TITAN, {RS}}, 4487 + {"mtdar", XSPR(31,467, 19), XSPR_MASK, COM, TITAN, {RS}}, 4488 + {"mtrtcu", XSPR(31,467, 20), XSPR_MASK, COM, TITAN, {RS}}, 4489 + {"mtrtcl", XSPR(31,467, 21), XSPR_MASK, COM, TITAN, {RS}}, 4490 + {"mtdec", XSPR(31,467, 22), XSPR_MASK, COM, 0, {RS}}, 4491 + {"mtsdr0", XSPR(31,467, 24), XSPR_MASK, POWER, 0, {RS}}, 4492 + {"mtsdr1", XSPR(31,467, 25), XSPR_MASK, COM, TITAN, {RS}}, 4493 + {"mtsrr0", XSPR(31,467, 26), XSPR_MASK, COM, 0, {RS}}, 4494 + {"mtsrr1", XSPR(31,467, 27), XSPR_MASK, COM, 0, {RS}}, 4495 + {"mtcfar", XSPR(31,467, 28), XSPR_MASK, POWER6, 0, {RS}}, 4496 + {"mtpid", XSPR(31,467, 48), XSPR_MASK, BOOKE, 0, {RS}}, 4497 + {"mtdecar", XSPR(31,467, 54), XSPR_MASK, BOOKE, 0, {RS}}, 4498 + {"mtcsrr0", XSPR(31,467, 58), XSPR_MASK, BOOKE, 0, {RS}}, 4499 + {"mtcsrr1", XSPR(31,467, 59), XSPR_MASK, BOOKE, 0, {RS}}, 4500 + {"mtdear", XSPR(31,467, 61), XSPR_MASK, BOOKE, 0, {RS}}, 4501 + {"mtesr", XSPR(31,467, 62), XSPR_MASK, BOOKE, 0, {RS}}, 4502 + {"mtivpr", XSPR(31,467, 63), XSPR_MASK, BOOKE, 0, {RS}}, 4503 + {"mtcmpa", XSPR(31,467,144), XSPR_MASK, PPC860, 0, {RS}}, 4504 + {"mtcmpb", XSPR(31,467,145), XSPR_MASK, PPC860, 0, {RS}}, 4505 + {"mtcmpc", XSPR(31,467,146), XSPR_MASK, PPC860, 0, {RS}}, 4506 + {"mtcmpd", XSPR(31,467,147), XSPR_MASK, PPC860, 0, {RS}}, 4507 + {"mticr", XSPR(31,467,148), XSPR_MASK, PPC860, 0, {RS}}, 4508 + {"mtder", XSPR(31,467,149), XSPR_MASK, PPC860, 0, {RS}}, 4509 + {"mtcounta", XSPR(31,467,150), XSPR_MASK, PPC860, 0, {RS}}, 4510 + {"mtcountb", XSPR(31,467,151), XSPR_MASK, PPC860, 0, {RS}}, 4511 + {"mtctrl", XSPR(31,467,152), XSPR_MASK, POWER4, 0, {RS}}, 4512 + {"mtcmpe", XSPR(31,467,152), XSPR_MASK, PPC860, 0, {RS}}, 4513 + {"mtcmpf", XSPR(31,467,153), XSPR_MASK, PPC860, 0, {RS}}, 4514 + {"mtcmpg", XSPR(31,467,154), XSPR_MASK, PPC860, 0, {RS}}, 4515 + {"mtcmph", XSPR(31,467,155), XSPR_MASK, PPC860, 0, {RS}}, 4516 + {"mtlctrl1", XSPR(31,467,156), XSPR_MASK, PPC860, 0, {RS}}, 4517 + {"mtlctrl2", XSPR(31,467,157), XSPR_MASK, PPC860, 0, {RS}}, 4518 + {"mtictrl", XSPR(31,467,158), XSPR_MASK, PPC860, 0, {RS}}, 4519 + {"mtbar", XSPR(31,467,159), XSPR_MASK, PPC860, 0, {RS}}, 4520 + {"mtvrsave", XSPR(31,467,256), XSPR_MASK, PPCVEC, 0, {RS}}, 4521 + {"mtusprg0", XSPR(31,467,256), XSPR_MASK, BOOKE, 0, {RS}}, 4522 + {"mtsprg", XSPR(31,467,256), XSPRG_MASK, PPC, 0, {SPRG, RS}}, 4523 + {"mtsprg0", XSPR(31,467,272), XSPR_MASK, PPC, 0, {RS}}, 4524 + {"mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, 0, {RS}}, 4525 + {"mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, 0, {RS}}, 4526 + {"mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, 0, {RS}}, 4527 + {"mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405|BOOKE, 0, {RS}}, 4528 + {"mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405|BOOKE, 0, {RS}}, 4529 + {"mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405|BOOKE, 0, {RS}}, 4530 + {"mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405|BOOKE, 0, {RS}}, 4531 + {"mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, 0, {RS}}, 4532 + {"mtear", XSPR(31,467,282), XSPR_MASK, PPC, TITAN, {RS}}, 4533 + {"mttbl", XSPR(31,467,284), XSPR_MASK, PPC, 0, {RS}}, 4534 + {"mttbu", XSPR(31,467,285), XSPR_MASK, PPC, 0, {RS}}, 4535 + {"mtdbsr", XSPR(31,467,304), XSPR_MASK, BOOKE, 0, {RS}}, 4536 + {"mtdbcr0", XSPR(31,467,308), XSPR_MASK, BOOKE, 0, {RS}}, 4537 + {"mtdbcr1", XSPR(31,467,309), XSPR_MASK, BOOKE, 0, {RS}}, 4538 + {"mtdbcr2", XSPR(31,467,310), XSPR_MASK, BOOKE, 0, {RS}}, 4539 + {"mtiac1", XSPR(31,467,312), XSPR_MASK, BOOKE, 0, {RS}}, 4540 + {"mtiac2", XSPR(31,467,313), XSPR_MASK, BOOKE, 0, {RS}}, 4541 + {"mtiac3", XSPR(31,467,314), XSPR_MASK, BOOKE, 0, {RS}}, 4542 + {"mtiac4", XSPR(31,467,315), XSPR_MASK, BOOKE, 0, {RS}}, 4543 + {"mtdac1", XSPR(31,467,316), XSPR_MASK, BOOKE, 0, {RS}}, 4544 + {"mtdac2", XSPR(31,467,317), XSPR_MASK, BOOKE, 0, {RS}}, 4545 + {"mtdvc1", XSPR(31,467,318), XSPR_MASK, BOOKE, 0, {RS}}, 4546 + {"mtdvc2", XSPR(31,467,319), XSPR_MASK, BOOKE, 0, {RS}}, 4547 + {"mttsr", XSPR(31,467,336), XSPR_MASK, BOOKE, 0, {RS}}, 4548 + {"mttcr", XSPR(31,467,340), XSPR_MASK, BOOKE, 0, {RS}}, 4549 + {"mtivor0", XSPR(31,467,400), XSPR_MASK, BOOKE, 0, {RS}}, 4550 + {"mtivor1", XSPR(31,467,401), XSPR_MASK, BOOKE, 0, {RS}}, 4551 + {"mtivor2", XSPR(31,467,402), XSPR_MASK, BOOKE, 0, {RS}}, 4552 + {"mtivor3", XSPR(31,467,403), XSPR_MASK, BOOKE, 0, {RS}}, 4553 + {"mtivor4", XSPR(31,467,404), XSPR_MASK, BOOKE, 0, {RS}}, 4554 + {"mtivor5", XSPR(31,467,405), XSPR_MASK, BOOKE, 0, {RS}}, 4555 + {"mtivor6", XSPR(31,467,406), XSPR_MASK, BOOKE, 0, {RS}}, 4556 + {"mtivor7", XSPR(31,467,407), XSPR_MASK, BOOKE, 0, {RS}}, 4557 + {"mtivor8", XSPR(31,467,408), XSPR_MASK, BOOKE, 0, {RS}}, 4558 + {"mtivor9", XSPR(31,467,409), XSPR_MASK, BOOKE, 0, {RS}}, 4559 + {"mtivor10", XSPR(31,467,410), XSPR_MASK, BOOKE, 0, {RS}}, 4560 + {"mtivor11", XSPR(31,467,411), XSPR_MASK, BOOKE, 0, {RS}}, 4561 + {"mtivor12", XSPR(31,467,412), XSPR_MASK, BOOKE, 0, {RS}}, 4562 + {"mtivor13", XSPR(31,467,413), XSPR_MASK, BOOKE, 0, {RS}}, 4563 + {"mtivor14", XSPR(31,467,414), XSPR_MASK, BOOKE, 0, {RS}}, 4564 + {"mtivor15", XSPR(31,467,415), XSPR_MASK, BOOKE, 0, {RS}}, 4565 + {"mtspefscr", XSPR(31,467,512), XSPR_MASK, PPCSPE, 0, {RS}}, 4566 + {"mtbbear", XSPR(31,467,513), XSPR_MASK, PPCBRLK, 0, {RS}}, 4567 + {"mtbbtar", XSPR(31,467,514), XSPR_MASK, PPCBRLK, 0, {RS}}, 4568 + {"mtivor32", XSPR(31,467,528), XSPR_MASK, PPCSPE, 0, {RS}}, 4569 + {"mtibatu", XSPR(31,467,528), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}}, 4570 + {"mtivor33", XSPR(31,467,529), XSPR_MASK, PPCSPE, 0, {RS}}, 4571 + {"mtibatl", XSPR(31,467,529), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}}, 4572 + {"mtivor34", XSPR(31,467,530), XSPR_MASK, PPCSPE, 0, {RS}}, 4573 + {"mtivor35", XSPR(31,467,531), XSPR_MASK, PPCPMR, 0, {RS}}, 4574 + {"mtdbatu", XSPR(31,467,536), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}}, 4575 + {"mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, TITAN, {SPRBAT, RS}}, 4576 + {"mtmcsrr0", XSPR(31,467,570), XSPR_MASK, PPCRFMCI, 0, {RS}}, 4577 + {"mtmcsrr1", XSPR(31,467,571), XSPR_MASK, PPCRFMCI, 0, {RS}}, 4578 + {"mtmcsr", XSPR(31,467,572), XSPR_MASK, PPCRFMCI, 0, {RS}}, 4579 + {"mtivndx", XSPR(31,467,880), XSPR_MASK, TITAN, 0, {RS}}, 4580 + {"mtdvndx", XSPR(31,467,881), XSPR_MASK, TITAN, 0, {RS}}, 4581 + {"mtivlim", XSPR(31,467,882), XSPR_MASK, TITAN, 0, {RS}}, 4582 + {"mtdvlim", XSPR(31,467,883), XSPR_MASK, TITAN, 0, {RS}}, 4583 + {"mtclcsr", XSPR(31,467,884), XSPR_MASK, TITAN, 0, {RS}}, 4584 + {"mtccr1", XSPR(31,467,888), XSPR_MASK, TITAN, 0, {RS}}, 4585 + {"mtppr", XSPR(31,467,896), XSPR_MASK, POWER7, 0, {RS}}, 4586 + {"mtppr32", XSPR(31,467,898), XSPR_MASK, POWER7, 0, {RS}}, 4587 + {"mtummcr0", XSPR(31,467,936), XSPR_MASK, PPC750, 0, {RS}}, 4588 + {"mtupmc1", XSPR(31,467,937), XSPR_MASK, PPC750, 0, {RS}}, 4589 + {"mtupmc2", XSPR(31,467,938), XSPR_MASK, PPC750, 0, {RS}}, 4590 + {"mtusia", XSPR(31,467,939), XSPR_MASK, PPC750, 0, {RS}}, 4591 + {"mtummcr1", XSPR(31,467,940), XSPR_MASK, PPC750, 0, {RS}}, 4592 + {"mtupmc3", XSPR(31,467,941), XSPR_MASK, PPC750, 0, {RS}}, 4593 + {"mtupmc4", XSPR(31,467,942), XSPR_MASK, PPC750, 0, {RS}}, 4594 + {"mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, 0, {RS}}, 4595 + {"mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, 0, {RS}}, 4596 + {"mtrmmucr", XSPR(31,467,946), XSPR_MASK, TITAN, 0, {RS}}, 4597 + {"mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405|TITAN, 0, {RS}}, 4598 + {"mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, 0, {RS}}, 4599 + {"mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, 0, {RS}}, 4600 + {"mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, 0, {RS}}, 4601 + {"mtdvc2", XSPR(31,467,951), XSPR_MASK, PPC405, 0, {RS}}, 4602 + {"mtmmcr0", XSPR(31,467,952), XSPR_MASK, PPC750, 0, {RS}}, 4603 + {"mtpmc1", XSPR(31,467,953), XSPR_MASK, PPC750, 0, {RS}}, 4604 + {"mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403, 0, {RS}}, 4605 + {"mtdcwr", XSPR(31,467,954), XSPR_MASK, PPC403, 0, {RS}}, 4606 + {"mtpmc2", XSPR(31,467,954), XSPR_MASK, PPC750, 0, {RS}}, 4607 + {"mtsia", XSPR(31,467,955), XSPR_MASK, PPC750, 0, {RS}}, 4608 + {"mtsler", XSPR(31,467,955), XSPR_MASK, PPC405, 0, {RS}}, 4609 + {"mtmmcr1", XSPR(31,467,956), XSPR_MASK, PPC750, 0, {RS}}, 4610 + {"mtsu0r", XSPR(31,467,956), XSPR_MASK, PPC405, 0, {RS}}, 4611 + {"mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405, 0, {RS}}, 4612 + {"mtpmc3", XSPR(31,467,957), XSPR_MASK, PPC750, 0, {RS}}, 4613 + {"mtpmc4", XSPR(31,467,958), XSPR_MASK, PPC750, 0, {RS}}, 4614 + {"mticdbdr", XSPR(31,467,979), XSPR_MASK, PPC403, 0, {RS}}, 4615 + {"mtesr", XSPR(31,467,980), XSPR_MASK, PPC403, 0, {RS}}, 4616 + {"mtdear", XSPR(31,467,981), XSPR_MASK, PPC403, 0, {RS}}, 4617 + {"mtevpr", XSPR(31,467,982), XSPR_MASK, PPC403, 0, {RS}}, 4618 + {"mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403, 0, {RS}}, 4619 + {"mttsr", XSPR(31,467,984), XSPR_MASK, PPC403, 0, {RS}}, 4620 + {"mttcr", XSPR(31,467,986), XSPR_MASK, PPC403, 0, {RS}}, 4621 + {"mtpit", XSPR(31,467,987), XSPR_MASK, PPC403, 0, {RS}}, 4622 + {"mttbhi", XSPR(31,467,988), XSPR_MASK, PPC403, 0, {RS}}, 4623 + {"mttblo", XSPR(31,467,989), XSPR_MASK, PPC403, 0, {RS}}, 4624 + {"mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, 0, {RS}}, 4625 + {"mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, 0, {RS}}, 4626 + {"mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, 0, {RS}}, 4627 + {"mtdbdr", XSPR(31,467,1011), XSPR_MASK, TITAN, 0, {RS}}, 4628 + {"mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, 0, {RS}}, 4629 + {"mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, 0, {RS}}, 4630 + {"mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, 0, {RS}}, 4631 + {"mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, 0, {RS}}, 4632 + {"mtdac2", XSPR(31,467,1015), XSPR_MASK, PPC403, 0, {RS}}, 4633 + {"mtl2cr", XSPR(31,467,1017), XSPR_MASK, PPC750, 0, {RS}}, 4634 + {"mtdccr", XSPR(31,467,1018), XSPR_MASK, PPC403, 0, {RS}}, 4635 + {"mticcr", XSPR(31,467,1019), XSPR_MASK, PPC403, 0, {RS}}, 4636 + {"mtictc", XSPR(31,467,1019), XSPR_MASK, PPC750, 0, {RS}}, 4637 + {"mtpbl1", XSPR(31,467,1020), XSPR_MASK, PPC403, 0, {RS}}, 4638 + {"mtthrm1", XSPR(31,467,1020), XSPR_MASK, PPC750, 0, {RS}}, 4639 + {"mtpbu1", XSPR(31,467,1021), XSPR_MASK, PPC403, 0, {RS}}, 4640 + {"mtthrm2", XSPR(31,467,1021), XSPR_MASK, PPC750, 0, {RS}}, 4641 + {"mtpbl2", XSPR(31,467,1022), XSPR_MASK, PPC403, 0, {RS}}, 4642 + {"mtthrm3", XSPR(31,467,1022), XSPR_MASK, PPC750, 0, {RS}}, 4643 + {"mtpbu2", XSPR(31,467,1023), XSPR_MASK, PPC403, 0, {RS}}, 4644 + {"mtspr", X(31,467), X_MASK, COM, 0, {SPR, RS}}, 4645 + 4646 + {"dcbi", X(31,470), XRT_MASK, PPC, 0, {RA0, RB}}, 4647 + 4648 + {"nand", XRC(31,476,0), X_MASK, COM, 0, {RA, RS, RB}}, 4649 + {"nand.", XRC(31,476,1), X_MASK, COM, 0, {RA, RS, RB}}, 4650 + 4651 + {"dsn", X(31,483), XRT_MASK, E500MC, 0, {RA, RB}}, 4652 + 4653 + {"dcread", X(31,486), X_MASK, PPC403|PPC440, PPCA2|PPC476, {RT, RA0, RB}}, 4654 + 4655 + {"icbtls", X(31,486), X_MASK, PPCCHLK|PPC476|TITAN, 0, {CT, RA0, RB}}, 4656 + 4657 + {"stvxl", X(31,487), X_MASK, PPCVEC, 0, {VS, RA0, RB}}, 4658 + 4659 + {"nabs", XO(31,488,0,0), XORB_MASK, M601, 0, {RT, RA}}, 4660 + {"nabs.", XO(31,488,0,1), XORB_MASK, M601, 0, {RT, RA}}, 4661 + 4662 + {"divd", XO(31,489,0,0), XO_MASK, PPC64, 0, {RT, RA, RB}}, 4663 + {"divd.", XO(31,489,0,1), XO_MASK, PPC64, 0, {RT, RA, RB}}, 4664 + 4665 + {"divw", XO(31,491,0,0), XO_MASK, PPC, 0, {RT, RA, RB}}, 4666 + {"divw.", XO(31,491,0,1), XO_MASK, PPC, 0, {RT, RA, RB}}, 4667 + 4668 + {"icbtlse", X(31,494), X_MASK, PPCCHLK, E500MC, {CT, RA, RB}}, 4669 + 4670 + {"slbia", X(31,498), 0xff1fffff, POWER6, 0, {IH}}, 4671 + {"slbia", X(31,498), 0xffffffff, PPC64, POWER6, {0}}, 4672 + 4673 + {"cli", X(31,502), XRB_MASK, POWER, 0, {RT, RA}}, 4674 + 4675 + {"popcntd", X(31,506), XRB_MASK, POWER7|PPCA2, 0, {RA, RS}}, 4676 + 4677 + {"cmpb", X(31,508), X_MASK, POWER6|PPCA2|PPC476, 0, {RA, RS, RB}}, 4678 + 4679 + {"mcrxr", X(31,512), XBFRARB_MASK, COM, POWER7, {BF}}, 4680 + 4681 + {"lbdcbx", X(31,514), X_MASK, E200Z4, 0, {RT, RA, RB}}, 4682 + {"lbdx", X(31,515), X_MASK, E500MC, 0, {RT, RA, RB}}, 4683 + 4684 + {"bblels", X(31,518), X_MASK, PPCBRLK, 0, {0}}, 4685 + 4686 + {"lvlx", X(31,519), X_MASK, CELL, 0, {VD, RA0, RB}}, 4687 + {"lbfcmux", APU(31,519,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 4688 + 4689 + {"subfco", XO(31,8,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4690 + {"sfo", XO(31,8,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4691 + {"subco", XO(31,8,1,0), XO_MASK, PPCCOM, 0, {RT, RB, RA}}, 4692 + {"subfco.", XO(31,8,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4693 + {"sfo.", XO(31,8,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4694 + {"subco.", XO(31,8,1,1), XO_MASK, PPCCOM, 0, {RT, RB, RA}}, 4695 + 4696 + {"addco", XO(31,10,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4697 + {"ao", XO(31,10,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4698 + {"addco.", XO(31,10,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4699 + {"ao.", XO(31,10,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4700 + 4701 + {"lxsspx", X(31,524), XX1_MASK, PPCVSX2, 0, {XT6, RA0, RB}}, 4702 + 4703 + {"clcs", X(31,531), XRB_MASK, M601, 0, {RT, RA}}, 4704 + 4705 + {"ldbrx", X(31,532), X_MASK, CELL|POWER7|PPCA2, 0, {RT, RA0, RB}}, 4706 + 4707 + {"lswx", X(31,533), X_MASK, PPCCOM, E500|E500MC, {RT, RAX, RBX}}, 4708 + {"lsx", X(31,533), X_MASK, PWRCOM, 0, {RT, RA, RB}}, 4709 + 4710 + {"lwbrx", X(31,534), X_MASK, PPCCOM, 0, {RT, RA0, RB}}, 4711 + {"lbrx", X(31,534), X_MASK, PWRCOM, 0, {RT, RA, RB}}, 4712 + 4713 + {"lfsx", X(31,535), X_MASK, COM, PPCEFS, {FRT, RA0, RB}}, 4714 + 4715 + {"srw", XRC(31,536,0), X_MASK, PPCCOM, 0, {RA, RS, RB}}, 4716 + {"sr", XRC(31,536,0), X_MASK, PWRCOM, 0, {RA, RS, RB}}, 4717 + {"srw.", XRC(31,536,1), X_MASK, PPCCOM, 0, {RA, RS, RB}}, 4718 + {"sr.", XRC(31,536,1), X_MASK, PWRCOM, 0, {RA, RS, RB}}, 4719 + 4720 + {"rrib", XRC(31,537,0), X_MASK, M601, 0, {RA, RS, RB}}, 4721 + {"rrib.", XRC(31,537,1), X_MASK, M601, 0, {RA, RS, RB}}, 4722 + 4723 + {"cnttzw", XRC(31,538,0), XRB_MASK, POWER9, 0, {RA, RS}}, 4724 + {"cnttzw.", XRC(31,538,1), XRB_MASK, POWER9, 0, {RA, RS}}, 4725 + 4726 + {"srd", XRC(31,539,0), X_MASK, PPC64, 0, {RA, RS, RB}}, 4727 + {"srd.", XRC(31,539,1), X_MASK, PPC64, 0, {RA, RS, RB}}, 4728 + 4729 + {"maskir", XRC(31,541,0), X_MASK, M601, 0, {RA, RS, RB}}, 4730 + {"maskir.", XRC(31,541,1), X_MASK, M601, 0, {RA, RS, RB}}, 4731 + 4732 + {"lhdcbx", X(31,546), X_MASK, E200Z4, 0, {RT, RA, RB}}, 4733 + {"lhdx", X(31,547), X_MASK, E500MC, 0, {RT, RA, RB}}, 4734 + 4735 + {"lvtrx", X(31,549), X_MASK, PPCVEC2, 0, {VD, RA0, RB}}, 4736 + 4737 + {"bbelr", X(31,550), X_MASK, PPCBRLK, 0, {0}}, 4738 + 4739 + {"lvrx", X(31,551), X_MASK, CELL, 0, {VD, RA0, RB}}, 4740 + {"lhfcmux", APU(31,551,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 4741 + 4742 + {"subfo", XO(31,40,1,0), XO_MASK, PPC, 0, {RT, RA, RB}}, 4743 + {"subo", XO(31,40,1,0), XO_MASK, PPC, 0, {RT, RB, RA}}, 4744 + {"subfo.", XO(31,40,1,1), XO_MASK, PPC, 0, {RT, RA, RB}}, 4745 + {"subo.", XO(31,40,1,1), XO_MASK, PPC, 0, {RT, RB, RA}}, 4746 + 4747 + {"tlbsync", X(31,566), 0xffffffff, PPC, 0, {0}}, 4748 + 4749 + {"lfsux", X(31,567), X_MASK, COM, PPCEFS, {FRT, RAS, RB}}, 4750 + 4751 + {"cnttzd", XRC(31,570,0), XRB_MASK, POWER9, 0, {RA, RS}}, 4752 + {"cnttzd.", XRC(31,570,1), XRB_MASK, POWER9, 0, {RA, RS}}, 4753 + 4754 + {"mcrxrx", X(31,576), XBFRARB_MASK, POWER9, 0, {BF}}, 4755 + 4756 + {"lwdcbx", X(31,578), X_MASK, E200Z4, 0, {RT, RA, RB}}, 4757 + {"lwdx", X(31,579), X_MASK, E500MC, 0, {RT, RA, RB}}, 4758 + 4759 + {"lvtlx", X(31,581), X_MASK, PPCVEC2, 0, {VD, RA0, RB}}, 4760 + 4761 + {"lwat", X(31,582), X_MASK, POWER9, 0, {RT, RA0, FC}}, 4762 + 4763 + {"lwfcmux", APU(31,583,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 4764 + 4765 + {"lxsdx", X(31,588), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}}, 4766 + 4767 + {"mfsr", X(31,595), XRB_MASK|(1<<20), COM, NON32, {RT, SR}}, 4768 + 4769 + {"lswi", X(31,597), X_MASK, PPCCOM, E500|E500MC, {RT, RAX, NBI}}, 4770 + {"lsi", X(31,597), X_MASK, PWRCOM, 0, {RT, RA0, NB}}, 4771 + 4772 + {"hwsync", XSYNC(31,598,0), 0xffffffff, POWER4, BOOKE|PPC476, {0}}, 4773 + {"lwsync", XSYNC(31,598,1), 0xffffffff, PPC, E500, {0}}, 4774 + {"ptesync", XSYNC(31,598,2), 0xffffffff, PPC64, 0, {0}}, 4775 + {"sync", X(31,598), XSYNCLE_MASK, E6500, 0, {LS, ESYNC}}, 4776 + {"sync", X(31,598), XSYNC_MASK, PPCCOM, BOOKE|PPC476, {LS}}, 4777 + {"msync", X(31,598), 0xffffffff, BOOKE|PPCA2|PPC476, 0, {0}}, 4778 + {"sync", X(31,598), 0xffffffff, BOOKE|PPC476, E6500, {0}}, 4779 + {"lwsync", X(31,598), 0xffffffff, E500, 0, {0}}, 4780 + {"dcs", X(31,598), 0xffffffff, PWRCOM, 0, {0}}, 4781 + 4782 + {"lfdx", X(31,599), X_MASK, COM, PPCEFS, {FRT, RA0, RB}}, 4783 + 4784 + {"mffgpr", XRC(31,607,0), XRA_MASK, POWER6, POWER7, {FRT, RB}}, 4785 + {"lfdepx", X(31,607), X_MASK, E500MC|PPCA2, 0, {FRT, RA0, RB}}, 4786 + 4787 + {"lddx", X(31,611), X_MASK, E500MC, 0, {RT, RA, RB}}, 4788 + 4789 + {"lvswx", X(31,613), X_MASK, PPCVEC2, 0, {VD, RA0, RB}}, 4790 + 4791 + {"ldat", X(31,614), X_MASK, POWER9, 0, {RT, RA0, FC}}, 4792 + 4793 + {"lqfcmux", APU(31,615,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 4794 + 4795 + {"nego", XO(31,104,1,0), XORB_MASK, COM, 0, {RT, RA}}, 4796 + {"nego.", XO(31,104,1,1), XORB_MASK, COM, 0, {RT, RA}}, 4797 + 4798 + {"mulo", XO(31,107,1,0), XO_MASK, M601, 0, {RT, RA, RB}}, 4799 + {"mulo.", XO(31,107,1,1), XO_MASK, M601, 0, {RT, RA, RB}}, 4800 + 4801 + {"mfsri", X(31,627), X_MASK, M601, 0, {RT, RA, RB}}, 4802 + 4803 + {"dclst", X(31,630), XRB_MASK, M601, 0, {RS, RA}}, 4804 + 4805 + {"lfdux", X(31,631), X_MASK, COM, PPCEFS, {FRT, RAS, RB}}, 4806 + 4807 + {"stbdcbx", X(31,642), X_MASK, E200Z4, 0, {RS, RA, RB}}, 4808 + {"stbdx", X(31,643), X_MASK, E500MC, 0, {RS, RA, RB}}, 4809 + 4810 + {"stvlx", X(31,647), X_MASK, CELL, 0, {VS, RA0, RB}}, 4811 + {"stbfcmux", APU(31,647,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 4812 + 4813 + {"stxsspx", X(31,652), XX1_MASK, PPCVSX2, 0, {XS6, RA0, RB}}, 4814 + 4815 + {"tbegin.", XRC(31,654,1), XRTLRARB_MASK, PPCHTM, 0, {HTM_R}}, 4816 + 4817 + {"subfeo", XO(31,136,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4818 + {"sfeo", XO(31,136,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4819 + {"subfeo.", XO(31,136,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4820 + {"sfeo.", XO(31,136,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4821 + 4822 + {"addeo", XO(31,138,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4823 + {"aeo", XO(31,138,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4824 + {"addeo.", XO(31,138,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4825 + {"aeo.", XO(31,138,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4826 + 4827 + {"mfsrin", X(31,659), XRA_MASK, PPC, NON32, {RT, RB}}, 4828 + 4829 + {"stdbrx", X(31,660), X_MASK, CELL|POWER7|PPCA2, 0, {RS, RA0, RB}}, 4830 + 4831 + {"stswx", X(31,661), X_MASK, PPCCOM, E500|E500MC, {RS, RA0, RB}}, 4832 + {"stsx", X(31,661), X_MASK, PWRCOM, 0, {RS, RA0, RB}}, 4833 + 4834 + {"stwbrx", X(31,662), X_MASK, PPCCOM, 0, {RS, RA0, RB}}, 4835 + {"stbrx", X(31,662), X_MASK, PWRCOM, 0, {RS, RA0, RB}}, 4836 + 4837 + {"stfsx", X(31,663), X_MASK, COM, PPCEFS, {FRS, RA0, RB}}, 4838 + 4839 + {"srq", XRC(31,664,0), X_MASK, M601, 0, {RA, RS, RB}}, 4840 + {"srq.", XRC(31,664,1), X_MASK, M601, 0, {RA, RS, RB}}, 4841 + 4842 + {"sre", XRC(31,665,0), X_MASK, M601, 0, {RA, RS, RB}}, 4843 + {"sre.", XRC(31,665,1), X_MASK, M601, 0, {RA, RS, RB}}, 4844 + 4845 + {"sthdcbx", X(31,674), X_MASK, E200Z4, 0, {RS, RA, RB}}, 4846 + {"sthdx", X(31,675), X_MASK, E500MC, 0, {RS, RA, RB}}, 4847 + 4848 + {"stvfrx", X(31,677), X_MASK, PPCVEC2, 0, {VS, RA0, RB}}, 4849 + 4850 + {"stvrx", X(31,679), X_MASK, CELL, 0, {VS, RA0, RB}}, 4851 + {"sthfcmux", APU(31,679,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 4852 + 4853 + {"tendall.", XRC(31,686,1)|(1<<25), XRTRARB_MASK, PPCHTM, 0, {0}}, 4854 + {"tend.", XRC(31,686,1), XRTARARB_MASK, PPCHTM, 0, {HTM_A}}, 4855 + 4856 + {"stbcx.", XRC(31,694,1), X_MASK, POWER8|E6500, 0, {RS, RA0, RB}}, 4857 + 4858 + {"stfsux", X(31,695), X_MASK, COM, PPCEFS, {FRS, RAS, RB}}, 4859 + 4860 + {"sriq", XRC(31,696,0), X_MASK, M601, 0, {RA, RS, SH}}, 4861 + {"sriq.", XRC(31,696,1), X_MASK, M601, 0, {RA, RS, SH}}, 4862 + 4863 + {"stwdcbx", X(31,706), X_MASK, E200Z4, 0, {RS, RA, RB}}, 4864 + {"stwdx", X(31,707), X_MASK, E500MC, 0, {RS, RA, RB}}, 4865 + 4866 + {"stvflx", X(31,709), X_MASK, PPCVEC2, 0, {VS, RA0, RB}}, 4867 + 4868 + {"stwat", X(31,710), X_MASK, POWER9, 0, {RS, RA0, FC}}, 4869 + 4870 + {"stwfcmux", APU(31,711,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 4871 + 4872 + {"stxsdx", X(31,716), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}}, 4873 + 4874 + {"tcheck", X(31,718), XRTBFRARB_MASK, PPCHTM, 0, {BF}}, 4875 + 4876 + {"subfzeo", XO(31,200,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}}, 4877 + {"sfzeo", XO(31,200,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}}, 4878 + {"subfzeo.", XO(31,200,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}}, 4879 + {"sfzeo.", XO(31,200,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}}, 4880 + 4881 + {"addzeo", XO(31,202,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}}, 4882 + {"azeo", XO(31,202,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}}, 4883 + {"addzeo.", XO(31,202,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}}, 4884 + {"azeo.", XO(31,202,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}}, 4885 + 4886 + {"stswi", X(31,725), X_MASK, PPCCOM, E500|E500MC, {RS, RA0, NB}}, 4887 + {"stsi", X(31,725), X_MASK, PWRCOM, 0, {RS, RA0, NB}}, 4888 + 4889 + {"sthcx.", XRC(31,726,1), X_MASK, POWER8|E6500, 0, {RS, RA0, RB}}, 4890 + 4891 + {"stfdx", X(31,727), X_MASK, COM, PPCEFS, {FRS, RA0, RB}}, 4892 + 4893 + {"srlq", XRC(31,728,0), X_MASK, M601, 0, {RA, RS, RB}}, 4894 + {"srlq.", XRC(31,728,1), X_MASK, M601, 0, {RA, RS, RB}}, 4895 + 4896 + {"sreq", XRC(31,729,0), X_MASK, M601, 0, {RA, RS, RB}}, 4897 + {"sreq.", XRC(31,729,1), X_MASK, M601, 0, {RA, RS, RB}}, 4898 + 4899 + {"mftgpr", XRC(31,735,0), XRA_MASK, POWER6, POWER7, {RT, FRB}}, 4900 + {"stfdepx", X(31,735), X_MASK, E500MC|PPCA2, 0, {FRS, RA0, RB}}, 4901 + 4902 + {"stddx", X(31,739), X_MASK, E500MC, 0, {RS, RA, RB}}, 4903 + 4904 + {"stvswx", X(31,741), X_MASK, PPCVEC2, 0, {VS, RA0, RB}}, 4905 + 4906 + {"stdat", X(31,742), X_MASK, POWER9, 0, {RS, RA0, FC}}, 4907 + 4908 + {"stqfcmux", APU(31,743,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 4909 + 4910 + {"subfmeo", XO(31,232,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}}, 4911 + {"sfmeo", XO(31,232,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}}, 4912 + {"subfmeo.", XO(31,232,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}}, 4913 + {"sfmeo.", XO(31,232,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}}, 4914 + 4915 + {"mulldo", XO(31,233,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}}, 4916 + {"mulldo.", XO(31,233,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}}, 4917 + 4918 + {"addmeo", XO(31,234,1,0), XORB_MASK, PPCCOM, 0, {RT, RA}}, 4919 + {"ameo", XO(31,234,1,0), XORB_MASK, PWRCOM, 0, {RT, RA}}, 4920 + {"addmeo.", XO(31,234,1,1), XORB_MASK, PPCCOM, 0, {RT, RA}}, 4921 + {"ameo.", XO(31,234,1,1), XORB_MASK, PWRCOM, 0, {RT, RA}}, 4922 + 4923 + {"mullwo", XO(31,235,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4924 + {"mulso", XO(31,235,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4925 + {"mullwo.", XO(31,235,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4926 + {"mulso.", XO(31,235,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4927 + 4928 + {"tsuspend.", XRCL(31,750,0,1), XRTRARB_MASK,PPCHTM, 0, {0}}, 4929 + {"tresume.", XRCL(31,750,1,1), XRTRARB_MASK,PPCHTM, 0, {0}}, 4930 + {"tsr.", XRC(31,750,1), XRTLRARB_MASK,PPCHTM, 0, {L}}, 4931 + 4932 + {"darn", X(31,755), XLRAND_MASK, POWER9, 0, {RT, LRAND}}, 4933 + 4934 + {"dcba", X(31,758), XRT_MASK, PPC405|PPC7450|BOOKE|PPCA2|PPC476, 0, {RA0, RB}}, 4935 + {"dcbal", XOPL(31,758,1), XRT_MASK, E500MC, 0, {RA0, RB}}, 4936 + 4937 + {"stfdux", X(31,759), X_MASK, COM, PPCEFS, {FRS, RAS, RB}}, 4938 + 4939 + {"srliq", XRC(31,760,0), X_MASK, M601, 0, {RA, RS, SH}}, 4940 + {"srliq.", XRC(31,760,1), X_MASK, M601, 0, {RA, RS, SH}}, 4941 + 4942 + {"lvsm", X(31,773), X_MASK, PPCVEC2, 0, {VD, RA0, RB}}, 4943 + 4944 + {"copy", XOPL(31,774,1), XRT_MASK, POWER9, 0, {RA0, RB}}, 4945 + 4946 + {"stvepxl", X(31,775), X_MASK, PPCVEC2, 0, {VS, RA0, RB}}, 4947 + {"lvlxl", X(31,775), X_MASK, CELL, 0, {VD, RA0, RB}}, 4948 + {"ldfcmux", APU(31,775,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 4949 + 4950 + {"dozo", XO(31,264,1,0), XO_MASK, M601, 0, {RT, RA, RB}}, 4951 + {"dozo.", XO(31,264,1,1), XO_MASK, M601, 0, {RT, RA, RB}}, 4952 + 4953 + {"addo", XO(31,266,1,0), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4954 + {"caxo", XO(31,266,1,0), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4955 + {"addo.", XO(31,266,1,1), XO_MASK, PPCCOM, 0, {RT, RA, RB}}, 4956 + {"caxo.", XO(31,266,1,1), XO_MASK, PWRCOM, 0, {RT, RA, RB}}, 4957 + 4958 + {"modsd", X(31,777), X_MASK, POWER9, 0, {RT, RA, RB}}, 4959 + {"modsw", X(31,779), X_MASK, POWER9, 0, {RT, RA, RB}}, 4960 + 4961 + {"lxvw4x", X(31,780), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}}, 4962 + {"lxsibzx", X(31,781), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}}, 4963 + 4964 + {"tabortwc.", XRC(31,782,1), X_MASK, PPCHTM, 0, {TO, RA, RB}}, 4965 + 4966 + {"tlbivax", X(31,786), XRT_MASK, BOOKE|PPCA2|PPC476, 0, {RA0, RB}}, 4967 + 4968 + {"lwzcix", X(31,789), X_MASK, POWER6, 0, {RT, RA0, RB}}, 4969 + 4970 + {"lhbrx", X(31,790), X_MASK, COM, 0, {RT, RA0, RB}}, 4971 + 4972 + {"lfdpx", X(31,791), X_MASK, POWER6, POWER7, {FRTp, RA0, RB}}, 4973 + {"lfqx", X(31,791), X_MASK, POWER2, 0, {FRT, RA, RB}}, 4974 + 4975 + {"sraw", XRC(31,792,0), X_MASK, PPCCOM, 0, {RA, RS, RB}}, 4976 + {"sra", XRC(31,792,0), X_MASK, PWRCOM, 0, {RA, RS, RB}}, 4977 + {"sraw.", XRC(31,792,1), X_MASK, PPCCOM, 0, {RA, RS, RB}}, 4978 + {"sra.", XRC(31,792,1), X_MASK, PWRCOM, 0, {RA, RS, RB}}, 4979 + 4980 + {"srad", XRC(31,794,0), X_MASK, PPC64, 0, {RA, RS, RB}}, 4981 + {"srad.", XRC(31,794,1), X_MASK, PPC64, 0, {RA, RS, RB}}, 4982 + 4983 + {"lfddx", X(31,803), X_MASK, E500MC, 0, {FRT, RA, RB}}, 4984 + 4985 + {"lvtrxl", X(31,805), X_MASK, PPCVEC2, 0, {VD, RA0, RB}}, 4986 + {"stvepx", X(31,807), X_MASK, PPCVEC2, 0, {VS, RA0, RB}}, 4987 + {"lvrxl", X(31,807), X_MASK, CELL, 0, {VD, RA0, RB}}, 4988 + 4989 + {"lxvh8x", X(31,812), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}}, 4990 + {"lxsihzx", X(31,813), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}}, 4991 + 4992 + {"tabortdc.", XRC(31,814,1), X_MASK, PPCHTM, 0, {TO, RA, RB}}, 4993 + 4994 + {"rac", X(31,818), X_MASK, M601, 0, {RT, RA, RB}}, 4995 + 4996 + {"erativax", X(31,819), X_MASK, PPCA2, 0, {RS, RA0, RB}}, 4997 + 4998 + {"lhzcix", X(31,821), X_MASK, POWER6, 0, {RT, RA0, RB}}, 4999 + 5000 + {"dss", XDSS(31,822,0), XDSS_MASK, PPCVEC, 0, {STRM}}, 5001 + 5002 + {"lfqux", X(31,823), X_MASK, POWER2, 0, {FRT, RA, RB}}, 5003 + 5004 + {"srawi", XRC(31,824,0), X_MASK, PPCCOM, 0, {RA, RS, SH}}, 5005 + {"srai", XRC(31,824,0), X_MASK, PWRCOM, 0, {RA, RS, SH}}, 5006 + {"srawi.", XRC(31,824,1), X_MASK, PPCCOM, 0, {RA, RS, SH}}, 5007 + {"srai.", XRC(31,824,1), X_MASK, PWRCOM, 0, {RA, RS, SH}}, 5008 + 5009 + {"sradi", XS(31,413,0), XS_MASK, PPC64, 0, {RA, RS, SH6}}, 5010 + {"sradi.", XS(31,413,1), XS_MASK, PPC64, 0, {RA, RS, SH6}}, 5011 + 5012 + {"lvtlxl", X(31,837), X_MASK, PPCVEC2, 0, {VD, RA0, RB}}, 5013 + 5014 + {"cpabort", X(31,838), XRTRARB_MASK,POWER9, 0, {0}}, 5015 + 5016 + {"divo", XO(31,331,1,0), XO_MASK, M601, 0, {RT, RA, RB}}, 5017 + {"divo.", XO(31,331,1,1), XO_MASK, M601, 0, {RT, RA, RB}}, 5018 + 5019 + {"lxvd2x", X(31,844), XX1_MASK, PPCVSX, 0, {XT6, RA0, RB}}, 5020 + {"lxvx", X(31,844), XX1_MASK, POWER8, POWER9|PPCVSX3, {XT6, RA0, RB}}, 5021 + 5022 + {"tabortwci.", XRC(31,846,1), X_MASK, PPCHTM, 0, {TO, RA, HTM_SI}}, 5023 + 5024 + {"tlbsrx.", XRC(31,850,1), XRT_MASK, PPCA2, 0, {RA0, RB}}, 5025 + 5026 + {"slbiag", X(31,850), XRARB_MASK, POWER9, 0, {RS}}, 5027 + {"slbmfev", X(31,851), XRLA_MASK, POWER9, 0, {RT, RB, A_L}}, 5028 + {"slbmfev", X(31,851), XRA_MASK, PPC64, POWER9, {RT, RB}}, 5029 + 5030 + {"lbzcix", X(31,853), X_MASK, POWER6, 0, {RT, RA0, RB}}, 5031 + 5032 + {"eieio", X(31,854), 0xffffffff, PPC, BOOKE|PPCA2|PPC476, {0}}, 5033 + {"mbar", X(31,854), X_MASK, BOOKE|PPCA2|PPC476, 0, {MO}}, 5034 + {"eieio", XMBAR(31,854,1),0xffffffff, E500, 0, {0}}, 5035 + {"eieio", X(31,854), 0xffffffff, PPCA2|PPC476, 0, {0}}, 5036 + 5037 + {"lfiwax", X(31,855), X_MASK, POWER6|PPCA2|PPC476, 0, {FRT, RA0, RB}}, 5038 + 5039 + {"lvswxl", X(31,869), X_MASK, PPCVEC2, 0, {VD, RA0, RB}}, 5040 + 5041 + {"abso", XO(31,360,1,0), XORB_MASK, M601, 0, {RT, RA}}, 5042 + {"abso.", XO(31,360,1,1), XORB_MASK, M601, 0, {RT, RA}}, 5043 + 5044 + {"divso", XO(31,363,1,0), XO_MASK, M601, 0, {RT, RA, RB}}, 5045 + {"divso.", XO(31,363,1,1), XO_MASK, M601, 0, {RT, RA, RB}}, 5046 + 5047 + {"lxvb16x", X(31,876), XX1_MASK, PPCVSX3, 0, {XT6, RA0, RB}}, 5048 + 5049 + {"tabortdci.", XRC(31,878,1), X_MASK, PPCHTM, 0, {TO, RA, HTM_SI}}, 5050 + 5051 + {"rmieg", X(31,882), XRTRA_MASK, POWER9, 0, {RB}}, 5052 + 5053 + {"ldcix", X(31,885), X_MASK, POWER6, 0, {RT, RA0, RB}}, 5054 + 5055 + {"msgsync", X(31,886), 0xffffffff, POWER9, 0, {0}}, 5056 + 5057 + {"lfiwzx", X(31,887), X_MASK, POWER7|PPCA2, 0, {FRT, RA0, RB}}, 5058 + 5059 + {"extswsli", XS(31,445,0), XS_MASK, POWER9, 0, {RA, RS, SH6}}, 5060 + {"extswsli.", XS(31,445,1), XS_MASK, POWER9, 0, {RA, RS, SH6}}, 5061 + 5062 + {"paste.", XRCL(31,902,1,1),XRT_MASK, POWER9, 0, {RA0, RB}}, 5063 + 5064 + {"stvlxl", X(31,903), X_MASK, CELL, 0, {VS, RA0, RB}}, 5065 + {"stdfcmux", APU(31,903,0), APU_MASK, PPC405, 0, {FCRT, RA, RB}}, 5066 + 5067 + {"divdeuo", XO(31,393,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 5068 + {"divdeuo.", XO(31,393,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 5069 + {"divweuo", XO(31,395,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 5070 + {"divweuo.", XO(31,395,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 5071 + 5072 + {"stxvw4x", X(31,908), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}}, 5073 + {"stxsibx", X(31,909), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}}, 5074 + 5075 + {"tabort.", XRC(31,910,1), XRTRB_MASK, PPCHTM, 0, {RA}}, 5076 + 5077 + {"tlbsx", XRC(31,914,0), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}}, 5078 + {"tlbsx.", XRC(31,914,1), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RTO, RA0, RB}}, 5079 + 5080 + {"slbmfee", X(31,915), XRLA_MASK, POWER9, 0, {RT, RB, A_L}}, 5081 + {"slbmfee", X(31,915), XRA_MASK, PPC64, POWER9, {RT, RB}}, 5082 + 5083 + {"stwcix", X(31,917), X_MASK, POWER6, 0, {RS, RA0, RB}}, 5084 + 5085 + {"sthbrx", X(31,918), X_MASK, COM, 0, {RS, RA0, RB}}, 5086 + 5087 + {"stfdpx", X(31,919), X_MASK, POWER6, POWER7, {FRSp, RA0, RB}}, 5088 + {"stfqx", X(31,919), X_MASK, POWER2, 0, {FRS, RA0, RB}}, 5089 + 5090 + {"sraq", XRC(31,920,0), X_MASK, M601, 0, {RA, RS, RB}}, 5091 + {"sraq.", XRC(31,920,1), X_MASK, M601, 0, {RA, RS, RB}}, 5092 + 5093 + {"srea", XRC(31,921,0), X_MASK, M601, 0, {RA, RS, RB}}, 5094 + {"srea.", XRC(31,921,1), X_MASK, M601, 0, {RA, RS, RB}}, 5095 + 5096 + {"extsh", XRC(31,922,0), XRB_MASK, PPCCOM, 0, {RA, RS}}, 5097 + {"exts", XRC(31,922,0), XRB_MASK, PWRCOM, 0, {RA, RS}}, 5098 + {"extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, 0, {RA, RS}}, 5099 + {"exts.", XRC(31,922,1), XRB_MASK, PWRCOM, 0, {RA, RS}}, 5100 + 5101 + {"stfddx", X(31,931), X_MASK, E500MC, 0, {FRS, RA, RB}}, 5102 + 5103 + {"stvfrxl", X(31,933), X_MASK, PPCVEC2, 0, {VS, RA0, RB}}, 5104 + 5105 + {"wclrone", XOPL2(31,934,2),XRT_MASK, PPCA2, 0, {RA0, RB}}, 5106 + {"wclrall", X(31,934), XRARB_MASK, PPCA2, 0, {L2}}, 5107 + {"wclr", X(31,934), X_MASK, PPCA2, 0, {L2, RA0, RB}}, 5108 + 5109 + {"stvrxl", X(31,935), X_MASK, CELL, 0, {VS, RA0, RB}}, 5110 + 5111 + {"divdeo", XO(31,425,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 5112 + {"divdeo.", XO(31,425,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 5113 + {"divweo", XO(31,427,1,0), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 5114 + {"divweo.", XO(31,427,1,1), XO_MASK, POWER7|PPCA2, 0, {RT, RA, RB}}, 5115 + 5116 + {"stxvh8x", X(31,940), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}}, 5117 + {"stxsihx", X(31,941), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}}, 5118 + 5119 + {"treclaim.", XRC(31,942,1), XRTRB_MASK, PPCHTM, 0, {RA}}, 5120 + 5121 + {"tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, PPCA2, {RT, RA}}, 5122 + {"tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, PPCA2, {RT, RA}}, 5123 + {"tlbre", X(31,946), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}}, 5124 + 5125 + {"sthcix", X(31,949), X_MASK, POWER6, 0, {RS, RA0, RB}}, 5126 + 5127 + {"icswepx", XRC(31,950,0), X_MASK, PPCA2, 0, {RS, RA, RB}}, 5128 + {"icswepx.", XRC(31,950,1), X_MASK, PPCA2, 0, {RS, RA, RB}}, 5129 + 5130 + {"stfqux", X(31,951), X_MASK, POWER2, 0, {FRS, RA, RB}}, 5131 + 5132 + {"sraiq", XRC(31,952,0), X_MASK, M601, 0, {RA, RS, SH}}, 5133 + {"sraiq.", XRC(31,952,1), X_MASK, M601, 0, {RA, RS, SH}}, 5134 + 5135 + {"extsb", XRC(31,954,0), XRB_MASK, PPC, 0, {RA, RS}}, 5136 + {"extsb.", XRC(31,954,1), XRB_MASK, PPC, 0, {RA, RS}}, 5137 + 5138 + {"stvflxl", X(31,965), X_MASK, PPCVEC2, 0, {VS, RA0, RB}}, 5139 + 5140 + {"iccci", X(31,966), XRT_MASK, PPC403|PPC440|TITAN|PPCA2, 0, {RAOPT, RBOPT}}, 5141 + {"ici", X(31,966), XRARB_MASK, PPCA2|PPC476, 0, {CT}}, 5142 + 5143 + {"divduo", XO(31,457,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}}, 5144 + {"divduo.", XO(31,457,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}}, 5145 + 5146 + {"divwuo", XO(31,459,1,0), XO_MASK, PPC, 0, {RT, RA, RB}}, 5147 + {"divwuo.", XO(31,459,1,1), XO_MASK, PPC, 0, {RT, RA, RB}}, 5148 + 5149 + {"stxvd2x", X(31,972), XX1_MASK, PPCVSX, 0, {XS6, RA0, RB}}, 5150 + {"stxvx", X(31,972), XX1_MASK, POWER8, POWER9|PPCVSX3, {XS6, RA0, RB}}, 5151 + 5152 + {"tlbld", X(31,978), XRTRA_MASK, PPC, PPC403|BOOKE|PPCA2|PPC476, {RB}}, 5153 + {"tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, 0, {RT, RA}}, 5154 + {"tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, 0, {RT, RA}}, 5155 + {"tlbwe", X(31,978), X_MASK, PPC403|BOOKE|PPCA2|PPC476, 0, {RSO, RAOPT, SHO}}, 5156 + 5157 + {"slbfee.", XRC(31,979,1), XRA_MASK, POWER6, 0, {RT, RB}}, 5158 + 5159 + {"stbcix", X(31,981), X_MASK, POWER6, 0, {RS, RA0, RB}}, 5160 + 5161 + {"icbi", X(31,982), XRT_MASK, PPC, 0, {RA0, RB}}, 5162 + 5163 + {"stfiwx", X(31,983), X_MASK, PPC, PPCEFS, {FRS, RA0, RB}}, 5164 + 5165 + {"extsw", XRC(31,986,0), XRB_MASK, PPC64, 0, {RA, RS}}, 5166 + {"extsw.", XRC(31,986,1), XRB_MASK, PPC64, 0, {RA, RS}}, 5167 + 5168 + {"icbiep", XRT(31,991,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}}, 5169 + 5170 + {"stvswxl", X(31,997), X_MASK, PPCVEC2, 0, {VS, RA0, RB}}, 5171 + 5172 + {"icread", X(31,998), XRT_MASK, PPC403|PPC440|PPC476|TITAN, 0, {RA0, RB}}, 5173 + 5174 + {"nabso", XO(31,488,1,0), XORB_MASK, M601, 0, {RT, RA}}, 5175 + {"nabso.", XO(31,488,1,1), XORB_MASK, M601, 0, {RT, RA}}, 5176 + 5177 + {"divdo", XO(31,489,1,0), XO_MASK, PPC64, 0, {RT, RA, RB}}, 5178 + {"divdo.", XO(31,489,1,1), XO_MASK, PPC64, 0, {RT, RA, RB}}, 5179 + 5180 + {"divwo", XO(31,491,1,0), XO_MASK, PPC, 0, {RT, RA, RB}}, 5181 + {"divwo.", XO(31,491,1,1), XO_MASK, PPC, 0, {RT, RA, RB}}, 5182 + 5183 + {"stxvb16x", X(31,1004), XX1_MASK, PPCVSX3, 0, {XS6, RA0, RB}}, 5184 + 5185 + {"trechkpt.", XRC(31,1006,1), XRTRARB_MASK,PPCHTM, 0, {0}}, 5186 + 5187 + {"tlbli", X(31,1010), XRTRA_MASK, PPC, TITAN, {RB}}, 5188 + 5189 + {"stdcix", X(31,1013), X_MASK, POWER6, 0, {RS, RA0, RB}}, 5190 + 5191 + {"dcbz", X(31,1014), XRT_MASK, PPC, 0, {RA0, RB}}, 5192 + {"dclz", X(31,1014), XRT_MASK, PPC, 0, {RA0, RB}}, 5193 + 5194 + {"dcbzep", XRT(31,1023,0), XRT_MASK, E500MC|PPCA2, 0, {RA0, RB}}, 5195 + 5196 + {"dcbzl", XOPL(31,1014,1), XRT_MASK, POWER4|E500MC, PPC476, {RA0, RB}}, 5197 + 5198 + {"cctpl", 0x7c210b78, 0xffffffff, CELL, 0, {0}}, 5199 + {"cctpm", 0x7c421378, 0xffffffff, CELL, 0, {0}}, 5200 + {"cctph", 0x7c631b78, 0xffffffff, CELL, 0, {0}}, 5201 + 5202 + {"dstt", XDSS(31,342,1), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}}, 5203 + {"dststt", XDSS(31,374,1), XDSS_MASK, PPCVEC, 0, {RA, RB, STRM}}, 5204 + {"dssall", XDSS(31,822,1), XDSS_MASK, PPCVEC, 0, {0}}, 5205 + 5206 + {"db8cyc", 0x7f9ce378, 0xffffffff, CELL, 0, {0}}, 5207 + {"db10cyc", 0x7fbdeb78, 0xffffffff, CELL, 0, {0}}, 5208 + {"db12cyc", 0x7fdef378, 0xffffffff, CELL, 0, {0}}, 5209 + {"db16cyc", 0x7ffffb78, 0xffffffff, CELL, 0, {0}}, 5210 + 5211 + {"lwz", OP(32), OP_MASK, PPCCOM, PPCVLE, {RT, D, RA0}}, 5212 + {"l", OP(32), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}}, 5213 + 5214 + {"lwzu", OP(33), OP_MASK, PPCCOM, PPCVLE, {RT, D, RAL}}, 5215 + {"lu", OP(33), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}}, 5216 + 5217 + {"lbz", OP(34), OP_MASK, COM, PPCVLE, {RT, D, RA0}}, 5218 + 5219 + {"lbzu", OP(35), OP_MASK, COM, PPCVLE, {RT, D, RAL}}, 5220 + 5221 + {"stw", OP(36), OP_MASK, PPCCOM, PPCVLE, {RS, D, RA0}}, 5222 + {"st", OP(36), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}}, 5223 + 5224 + {"stwu", OP(37), OP_MASK, PPCCOM, PPCVLE, {RS, D, RAS}}, 5225 + {"stu", OP(37), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}}, 5226 + 5227 + {"stb", OP(38), OP_MASK, COM, PPCVLE, {RS, D, RA0}}, 5228 + 5229 + {"stbu", OP(39), OP_MASK, COM, PPCVLE, {RS, D, RAS}}, 5230 + 5231 + {"lhz", OP(40), OP_MASK, COM, PPCVLE, {RT, D, RA0}}, 5232 + 5233 + {"lhzu", OP(41), OP_MASK, COM, PPCVLE, {RT, D, RAL}}, 5234 + 5235 + {"lha", OP(42), OP_MASK, COM, PPCVLE, {RT, D, RA0}}, 5236 + 5237 + {"lhau", OP(43), OP_MASK, COM, PPCVLE, {RT, D, RAL}}, 5238 + 5239 + {"sth", OP(44), OP_MASK, COM, PPCVLE, {RS, D, RA0}}, 5240 + 5241 + {"sthu", OP(45), OP_MASK, COM, PPCVLE, {RS, D, RAS}}, 5242 + 5243 + {"lmw", OP(46), OP_MASK, PPCCOM, PPCVLE, {RT, D, RAM}}, 5244 + {"lm", OP(46), OP_MASK, PWRCOM, PPCVLE, {RT, D, RA0}}, 5245 + 5246 + {"stmw", OP(47), OP_MASK, PPCCOM, PPCVLE, {RS, D, RA0}}, 5247 + {"stm", OP(47), OP_MASK, PWRCOM, PPCVLE, {RS, D, RA0}}, 5248 + 5249 + {"lfs", OP(48), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RA0}}, 5250 + 5251 + {"lfsu", OP(49), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RAS}}, 5252 + 5253 + {"lfd", OP(50), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RA0}}, 5254 + 5255 + {"lfdu", OP(51), OP_MASK, COM, PPCEFS|PPCVLE, {FRT, D, RAS}}, 5256 + 5257 + {"stfs", OP(52), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RA0}}, 5258 + 5259 + {"stfsu", OP(53), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RAS}}, 5260 + 5261 + {"stfd", OP(54), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RA0}}, 5262 + 5263 + {"stfdu", OP(55), OP_MASK, COM, PPCEFS|PPCVLE, {FRS, D, RAS}}, 5264 + 5265 + {"lq", OP(56), OP_MASK, POWER4, PPC476|PPCVLE, {RTQ, DQ, RAQ}}, 5266 + {"psq_l", OP(56), OP_MASK, PPCPS, PPCVLE, {FRT,PSD,RA,PSW,PSQ}}, 5267 + {"lfq", OP(56), OP_MASK, POWER2, PPCVLE, {FRT, D, RA0}}, 5268 + 5269 + {"lxsd", DSO(57,2), DS_MASK, PPCVSX3, PPCVLE, {VD, DS, RA0}}, 5270 + {"lxssp", DSO(57,3), DS_MASK, PPCVSX3, PPCVLE, {VD, DS, RA0}}, 5271 + {"lfdp", OP(57), OP_MASK, POWER6, POWER7|PPCVLE, {FRTp, DS, RA0}}, 5272 + {"psq_lu", OP(57), OP_MASK, PPCPS, PPCVLE, {FRT,PSD,RA,PSW,PSQ}}, 5273 + {"lfqu", OP(57), OP_MASK, POWER2, PPCVLE, {FRT, D, RA0}}, 5274 + 5275 + {"ld", DSO(58,0), DS_MASK, PPC64, PPCVLE, {RT, DS, RA0}}, 5276 + {"ldu", DSO(58,1), DS_MASK, PPC64, PPCVLE, {RT, DS, RAL}}, 5277 + {"lwa", DSO(58,2), DS_MASK, PPC64, PPCVLE, {RT, DS, RA0}}, 5278 + 5279 + {"dadd", XRC(59,2,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}}, 5280 + {"dadd.", XRC(59,2,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}}, 5281 + 5282 + {"dqua", ZRC(59,3,0), Z2_MASK, POWER6, PPCVLE, {FRT,FRA,FRB,RMC}}, 5283 + {"dqua.", ZRC(59,3,1), Z2_MASK, POWER6, PPCVLE, {FRT,FRA,FRB,RMC}}, 5284 + 5285 + {"fdivs", A(59,18,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}}, 5286 + {"fdivs.", A(59,18,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}}, 5287 + 5288 + {"fsubs", A(59,20,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}}, 5289 + {"fsubs.", A(59,20,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}}, 5290 + 5291 + {"fadds", A(59,21,0), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}}, 5292 + {"fadds.", A(59,21,1), AFRC_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRB}}, 5293 + 5294 + {"fsqrts", A(59,22,0), AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}}, 5295 + {"fsqrts.", A(59,22,1), AFRAFRC_MASK, PPC, TITAN|PPCVLE, {FRT, FRB}}, 5296 + 5297 + {"fres", A(59,24,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5298 + {"fres", A(59,24,0), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}}, 5299 + {"fres.", A(59,24,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5300 + {"fres.", A(59,24,1), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}}, 5301 + 5302 + {"fmuls", A(59,25,0), AFRB_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC}}, 5303 + {"fmuls.", A(59,25,1), AFRB_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC}}, 5304 + 5305 + {"frsqrtes", A(59,26,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5306 + {"frsqrtes", A(59,26,0), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}}, 5307 + {"frsqrtes.", A(59,26,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5308 + {"frsqrtes.", A(59,26,1), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}}, 5309 + 5310 + {"fmsubs", A(59,28,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5311 + {"fmsubs.", A(59,28,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5312 + 5313 + {"fmadds", A(59,29,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5314 + {"fmadds.", A(59,29,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5315 + 5316 + {"fnmsubs", A(59,30,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5317 + {"fnmsubs.", A(59,30,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5318 + 5319 + {"fnmadds", A(59,31,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5320 + {"fnmadds.", A(59,31,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5321 + 5322 + {"dmul", XRC(59,34,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}}, 5323 + {"dmul.", XRC(59,34,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}}, 5324 + 5325 + {"drrnd", ZRC(59,35,0), Z2_MASK, POWER6, PPCVLE, {FRT, FRA, FRB, RMC}}, 5326 + {"drrnd.", ZRC(59,35,1), Z2_MASK, POWER6, PPCVLE, {FRT, FRA, FRB, RMC}}, 5327 + 5328 + {"dscli", ZRC(59,66,0), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}}, 5329 + {"dscli.", ZRC(59,66,1), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}}, 5330 + 5331 + {"dquai", ZRC(59,67,0), Z2_MASK, POWER6, PPCVLE, {TE, FRT,FRB,RMC}}, 5332 + {"dquai.", ZRC(59,67,1), Z2_MASK, POWER6, PPCVLE, {TE, FRT,FRB,RMC}}, 5333 + 5334 + {"dscri", ZRC(59,98,0), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}}, 5335 + {"dscri.", ZRC(59,98,1), Z_MASK, POWER6, PPCVLE, {FRT, FRA, SH16}}, 5336 + 5337 + {"drintx", ZRC(59,99,0), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}}, 5338 + {"drintx.", ZRC(59,99,1), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}}, 5339 + 5340 + {"dcmpo", X(59,130), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}}, 5341 + 5342 + {"dtstex", X(59,162), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}}, 5343 + {"dtstdc", Z(59,194), Z_MASK, POWER6, PPCVLE, {BF, FRA, DCM}}, 5344 + {"dtstdg", Z(59,226), Z_MASK, POWER6, PPCVLE, {BF, FRA, DGM}}, 5345 + 5346 + {"drintn", ZRC(59,227,0), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}}, 5347 + {"drintn.", ZRC(59,227,1), Z2_MASK, POWER6, PPCVLE, {R, FRT, FRB, RMC}}, 5348 + 5349 + {"dctdp", XRC(59,258,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}}, 5350 + {"dctdp.", XRC(59,258,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}}, 5351 + 5352 + {"dctfix", XRC(59,290,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}}, 5353 + {"dctfix.", XRC(59,290,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}}, 5354 + 5355 + {"ddedpd", XRC(59,322,0), X_MASK, POWER6, PPCVLE, {SP, FRT, FRB}}, 5356 + {"ddedpd.", XRC(59,322,1), X_MASK, POWER6, PPCVLE, {SP, FRT, FRB}}, 5357 + 5358 + {"dxex", XRC(59,354,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}}, 5359 + {"dxex.", XRC(59,354,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}}, 5360 + 5361 + {"dsub", XRC(59,514,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}}, 5362 + {"dsub.", XRC(59,514,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}}, 5363 + 5364 + {"ddiv", XRC(59,546,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}}, 5365 + {"ddiv.", XRC(59,546,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}}, 5366 + 5367 + {"dcmpu", X(59,642), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}}, 5368 + 5369 + {"dtstsf", X(59,674), X_MASK, POWER6, PPCVLE, {BF, FRA, FRB}}, 5370 + {"dtstsfi", X(59,675), X_MASK|1<<22,POWER9, PPCVLE, {BF, UIM6, FRB}}, 5371 + 5372 + {"drsp", XRC(59,770,0), X_MASK, POWER6, PPCVLE, {FRT, FRB}}, 5373 + {"drsp.", XRC(59,770,1), X_MASK, POWER6, PPCVLE, {FRT, FRB}}, 5374 + 5375 + {"dcffix", XRC(59,802,0), X_MASK|FRA_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5376 + {"dcffix.", XRC(59,802,1), X_MASK|FRA_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5377 + 5378 + {"denbcd", XRC(59,834,0), X_MASK, POWER6, PPCVLE, {S, FRT, FRB}}, 5379 + {"denbcd.", XRC(59,834,1), X_MASK, POWER6, PPCVLE, {S, FRT, FRB}}, 5380 + 5381 + {"fcfids", XRC(59,846,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}}, 5382 + {"fcfids.", XRC(59,846,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}}, 5383 + 5384 + {"diex", XRC(59,866,0), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}}, 5385 + {"diex.", XRC(59,866,1), X_MASK, POWER6, PPCVLE, {FRT, FRA, FRB}}, 5386 + 5387 + {"fcfidus", XRC(59,974,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}}, 5388 + {"fcfidus.", XRC(59,974,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}}, 5389 + 5390 + {"xsaddsp", XX3(60,0), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5391 + {"xsmaddasp", XX3(60,1), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5392 + {"xxsldwi", XX3(60,2), XX3SHW_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, SHW}}, 5393 + {"xscmpeqdp", XX3(60,3), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, 5394 + {"xsrsqrtesp", XX2(60,10), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, 5395 + {"xssqrtsp", XX2(60,11), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, 5396 + {"xxsel", XX4(60,3), XX4_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, XC6}}, 5397 + {"xssubsp", XX3(60,8), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5398 + {"xsmaddmsp", XX3(60,9), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5399 + {"xxspltd", XX3(60,10), XX3DM_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6S, DMEX}}, 5400 + {"xxmrghd", XX3(60,10), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5401 + {"xxswapd", XX3(60,10)|(2<<8), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6S}}, 5402 + {"xxmrgld", XX3(60,10)|(3<<8), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5403 + {"xxpermdi", XX3(60,10), XX3DM_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6, DM}}, 5404 + {"xscmpgtdp", XX3(60,11), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, 5405 + {"xsresp", XX2(60,26), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, 5406 + {"xsmulsp", XX3(60,16), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5407 + {"xsmsubasp", XX3(60,17), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5408 + {"xxmrghw", XX3(60,18), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5409 + {"xscmpgedp", XX3(60,19), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, 5410 + {"xsdivsp", XX3(60,24), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5411 + {"xsmsubmsp", XX3(60,25), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5412 + {"xxperm", XX3(60,26), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, 5413 + {"xsadddp", XX3(60,32), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5414 + {"xsmaddadp", XX3(60,33), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5415 + {"xscmpudp", XX3(60,35), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}}, 5416 + {"xscvdpuxws", XX2(60,72), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5417 + {"xsrdpi", XX2(60,73), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5418 + {"xsrsqrtedp", XX2(60,74), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5419 + {"xssqrtdp", XX2(60,75), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5420 + {"xssubdp", XX3(60,40), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5421 + {"xsmaddmdp", XX3(60,41), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5422 + {"xscmpodp", XX3(60,43), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}}, 5423 + {"xscvdpsxws", XX2(60,88), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5424 + {"xsrdpiz", XX2(60,89), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5425 + {"xsredp", XX2(60,90), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5426 + {"xsmuldp", XX3(60,48), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5427 + {"xsmsubadp", XX3(60,49), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5428 + {"xxmrglw", XX3(60,50), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5429 + {"xsrdpip", XX2(60,105), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5430 + {"xstsqrtdp", XX2(60,106), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}}, 5431 + {"xsrdpic", XX2(60,107), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5432 + {"xsdivdp", XX3(60,56), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5433 + {"xsmsubmdp", XX3(60,57), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5434 + {"xxpermr", XX3(60,58), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, 5435 + {"xscmpexpdp", XX3(60,59), XX3BF_MASK, PPCVSX3, PPCVLE, {BF, XA6, XB6}}, 5436 + {"xsrdpim", XX2(60,121), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5437 + {"xstdivdp", XX3(60,61), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}}, 5438 + {"xvaddsp", XX3(60,64), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5439 + {"xvmaddasp", XX3(60,65), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5440 + {"xvcmpeqsp", XX3RC(60,67,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5441 + {"xvcmpeqsp.", XX3RC(60,67,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5442 + {"xvcvspuxws", XX2(60,136), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5443 + {"xvrspi", XX2(60,137), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5444 + {"xvrsqrtesp", XX2(60,138), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5445 + {"xvsqrtsp", XX2(60,139), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5446 + {"xvsubsp", XX3(60,72), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5447 + {"xvmaddmsp", XX3(60,73), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5448 + {"xvcmpgtsp", XX3RC(60,75,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5449 + {"xvcmpgtsp.", XX3RC(60,75,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5450 + {"xvcvspsxws", XX2(60,152), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5451 + {"xvrspiz", XX2(60,153), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5452 + {"xvresp", XX2(60,154), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5453 + {"xvmulsp", XX3(60,80), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5454 + {"xvmsubasp", XX3(60,81), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5455 + {"xxspltw", XX2(60,164), XX2UIM_MASK, PPCVSX, PPCVLE, {XT6, XB6, UIM}}, 5456 + {"xxextractuw", XX2(60,165), XX2UIM4_MASK, PPCVSX3, PPCVLE, {XT6, XB6, UIMM4}}, 5457 + {"xvcmpgesp", XX3RC(60,83,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5458 + {"xvcmpgesp.", XX3RC(60,83,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5459 + {"xvcvuxwsp", XX2(60,168), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5460 + {"xvrspip", XX2(60,169), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5461 + {"xvtsqrtsp", XX2(60,170), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}}, 5462 + {"xvrspic", XX2(60,171), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5463 + {"xvdivsp", XX3(60,88), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5464 + {"xvmsubmsp", XX3(60,89), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5465 + {"xxspltib", X(60,360), XX1_MASK|3<<19, PPCVSX3, PPCVLE, {XT6, IMM8}}, 5466 + {"xxinsertw", XX2(60,181), XX2UIM4_MASK, PPCVSX3, PPCVLE, {XT6, XB6, UIMM4}}, 5467 + {"xvcvsxwsp", XX2(60,184), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5468 + {"xvrspim", XX2(60,185), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5469 + {"xvtdivsp", XX3(60,93), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}}, 5470 + {"xvadddp", XX3(60,96), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5471 + {"xvmaddadp", XX3(60,97), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5472 + {"xvcmpeqdp", XX3RC(60,99,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5473 + {"xvcmpeqdp.", XX3RC(60,99,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5474 + {"xvcvdpuxws", XX2(60,200), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5475 + {"xvrdpi", XX2(60,201), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5476 + {"xvrsqrtedp", XX2(60,202), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5477 + {"xvsqrtdp", XX2(60,203), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5478 + {"xvsubdp", XX3(60,104), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5479 + {"xvmaddmdp", XX3(60,105), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5480 + {"xvcmpgtdp", XX3RC(60,107,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5481 + {"xvcmpgtdp.", XX3RC(60,107,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5482 + {"xvcvdpsxws", XX2(60,216), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5483 + {"xvrdpiz", XX2(60,217), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5484 + {"xvredp", XX2(60,218), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5485 + {"xvmuldp", XX3(60,112), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5486 + {"xvmsubadp", XX3(60,113), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5487 + {"xvcmpgedp", XX3RC(60,115,0), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5488 + {"xvcmpgedp.", XX3RC(60,115,1), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5489 + {"xvcvuxwdp", XX2(60,232), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5490 + {"xvrdpip", XX2(60,233), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5491 + {"xvtsqrtdp", XX2(60,234), XX2BF_MASK, PPCVSX, PPCVLE, {BF, XB6}}, 5492 + {"xvrdpic", XX2(60,235), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5493 + {"xvdivdp", XX3(60,120), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5494 + {"xvmsubmdp", XX3(60,121), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5495 + {"xvcvsxwdp", XX2(60,248), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5496 + {"xvrdpim", XX2(60,249), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5497 + {"xvtdivdp", XX3(60,125), XX3BF_MASK, PPCVSX, PPCVLE, {BF, XA6, XB6}}, 5498 + {"xsmaxcdp", XX3(60,128), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, 5499 + {"xsnmaddasp", XX3(60,129), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5500 + {"xxland", XX3(60,130), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5501 + {"xscvdpsp", XX2(60,265), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5502 + {"xscvdpspn", XX2(60,267), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, 5503 + {"xsmincdp", XX3(60,136), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, 5504 + {"xsnmaddmsp", XX3(60,137), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5505 + {"xxlandc", XX3(60,138), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5506 + {"xsrsp", XX2(60,281), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, 5507 + {"xsmaxjdp", XX3(60,144), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, 5508 + {"xsnmsubasp", XX3(60,145), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5509 + {"xxlor", XX3(60,146), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5510 + {"xscvuxdsp", XX2(60,296), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, 5511 + {"xststdcsp", XX2(60,298), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}}, 5512 + {"xsminjdp", XX3(60,152), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, 5513 + {"xsnmsubmsp", XX3(60,153), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5514 + {"xxlxor", XX3(60,154), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5515 + {"xscvsxdsp", XX2(60,312), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, 5516 + {"xsmaxdp", XX3(60,160), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5517 + {"xsnmaddadp", XX3(60,161), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5518 + {"xxlnor", XX3(60,162), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5519 + {"xscvdpuxds", XX2(60,328), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5520 + {"xscvspdp", XX2(60,329), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5521 + {"xscvspdpn", XX2(60,331), XX2_MASK, PPCVSX2, PPCVLE, {XT6, XB6}}, 5522 + {"xsmindp", XX3(60,168), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5523 + {"xsnmaddmdp", XX3(60,169), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5524 + {"xxlorc", XX3(60,170), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5525 + {"xscvdpsxds", XX2(60,344), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5526 + {"xsabsdp", XX2(60,345), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5527 + {"xsxexpdp", XX2VA(60,347,0),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}}, 5528 + {"xsxsigdp", XX2VA(60,347,1),XX2_MASK|1, PPCVSX3, PPCVLE, {RT, XB6}}, 5529 + {"xscvhpdp", XX2VA(60,347,16),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, 5530 + {"xscvdphp", XX2VA(60,347,17),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, 5531 + {"xscpsgndp", XX3(60,176), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5532 + {"xsnmsubadp", XX3(60,177), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5533 + {"xxlnand", XX3(60,178), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5534 + {"xscvuxddp", XX2(60,360), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5535 + {"xsnabsdp", XX2(60,361), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5536 + {"xststdcdp", XX2(60,362), XX2BFD_MASK, PPCVSX3, PPCVLE, {BF, XB6, DCMX}}, 5537 + {"xsnmsubmdp", XX3(60,185), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5538 + {"xxleqv", XX3(60,186), XX3_MASK, PPCVSX2, PPCVLE, {XT6, XA6, XB6}}, 5539 + {"xscvsxddp", XX2(60,376), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5540 + {"xsnegdp", XX2(60,377), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5541 + {"xvmaxsp", XX3(60,192), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5542 + {"xvnmaddasp", XX3(60,193), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5543 + {"xvcvspuxds", XX2(60,392), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5544 + {"xvcvdpsp", XX2(60,393), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5545 + {"xvminsp", XX3(60,200), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5546 + {"xvnmaddmsp", XX3(60,201), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5547 + {"xvcvspsxds", XX2(60,408), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5548 + {"xvabssp", XX2(60,409), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5549 + {"xvmovsp", XX3(60,208), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6S}}, 5550 + {"xvcpsgnsp", XX3(60,208), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5551 + {"xvnmsubasp", XX3(60,209), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5552 + {"xvcvuxdsp", XX2(60,424), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5553 + {"xvnabssp", XX2(60,425), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5554 + {"xvtstdcsp", XX2(60,426), XX2DCMXS_MASK, PPCVSX3, PPCVLE, {XT6, XB6, DCMXS}}, 5555 + {"xviexpsp", XX3(60,216), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, 5556 + {"xvnmsubmsp", XX3(60,217), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5557 + {"xvcvsxdsp", XX2(60,440), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5558 + {"xvnegsp", XX2(60,441), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5559 + {"xvmaxdp", XX3(60,224), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5560 + {"xvnmaddadp", XX3(60,225), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5561 + {"xvcvdpuxds", XX2(60,456), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5562 + {"xvcvspdp", XX2(60,457), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5563 + {"xsiexpdp", X(60,918), XX1_MASK, PPCVSX3, PPCVLE, {XT6, RA, RB}}, 5564 + {"xvmindp", XX3(60,232), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5565 + {"xvnmaddmdp", XX3(60,233), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5566 + {"xvcvdpsxds", XX2(60,472), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5567 + {"xvabsdp", XX2(60,473), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5568 + {"xvxexpdp", XX2VA(60,475,0),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, 5569 + {"xvxsigdp", XX2VA(60,475,1),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, 5570 + {"xxbrh", XX2VA(60,475,7),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, 5571 + {"xvxexpsp", XX2VA(60,475,8),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, 5572 + {"xvxsigsp", XX2VA(60,475,9),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, 5573 + {"xxbrw", XX2VA(60,475,15),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, 5574 + {"xxbrd", XX2VA(60,475,23),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, 5575 + {"xvcvhpsp", XX2VA(60,475,24),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, 5576 + {"xvcvsphp", XX2VA(60,475,25),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, 5577 + {"xxbrq", XX2VA(60,475,31),XX2_MASK, PPCVSX3, PPCVLE, {XT6, XB6}}, 5578 + {"xvmovdp", XX3(60,240), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6S}}, 5579 + {"xvcpsgndp", XX3(60,240), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5580 + {"xvnmsubadp", XX3(60,241), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5581 + {"xvcvuxddp", XX2(60,488), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5582 + {"xvnabsdp", XX2(60,489), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5583 + {"xvtstdcdp", XX2(60,490), XX2DCMXS_MASK, PPCVSX3, PPCVLE, {XT6, XB6, DCMXS}}, 5584 + {"xviexpdp", XX3(60,248), XX3_MASK, PPCVSX3, PPCVLE, {XT6, XA6, XB6}}, 5585 + {"xvnmsubmdp", XX3(60,249), XX3_MASK, PPCVSX, PPCVLE, {XT6, XA6, XB6}}, 5586 + {"xvcvsxddp", XX2(60,504), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5587 + {"xvnegdp", XX2(60,505), XX2_MASK, PPCVSX, PPCVLE, {XT6, XB6}}, 5588 + 5589 + {"psq_st", OP(60), OP_MASK, PPCPS, PPCVLE, {FRS,PSD,RA,PSW,PSQ}}, 5590 + {"stfq", OP(60), OP_MASK, POWER2, PPCVLE, {FRS, D, RA}}, 5591 + 5592 + {"lxv", DQX(61,1), DQX_MASK, PPCVSX3, PPCVLE, {XTQ6, DQ, RA0}}, 5593 + {"stxv", DQX(61,5), DQX_MASK, PPCVSX3, PPCVLE, {XSQ6, DQ, RA0}}, 5594 + {"stxsd", DSO(61,2), DS_MASK, PPCVSX3, PPCVLE, {VS, DS, RA0}}, 5595 + {"stxssp", DSO(61,3), DS_MASK, PPCVSX3, PPCVLE, {VS, DS, RA0}}, 5596 + {"stfdp", OP(61), OP_MASK, POWER6, POWER7|PPCVLE, {FRSp, DS, RA0}}, 5597 + {"psq_stu", OP(61), OP_MASK, PPCPS, PPCVLE, {FRS,PSD,RA,PSW,PSQ}}, 5598 + {"stfqu", OP(61), OP_MASK, POWER2, PPCVLE, {FRS, D, RA}}, 5599 + 5600 + {"std", DSO(62,0), DS_MASK, PPC64, PPCVLE, {RS, DS, RA0}}, 5601 + {"stdu", DSO(62,1), DS_MASK, PPC64, PPCVLE, {RS, DS, RAS}}, 5602 + {"stq", DSO(62,2), DS_MASK, POWER4, PPC476|PPCVLE, {RSQ, DS, RA0}}, 5603 + 5604 + {"fcmpu", X(63,0), XBF_MASK, COM, PPCEFS|PPCVLE, {BF, FRA, FRB}}, 5605 + 5606 + {"daddq", XRC(63,2,0), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}}, 5607 + {"daddq.", XRC(63,2,1), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}}, 5608 + 5609 + {"dquaq", ZRC(63,3,0), Z2_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp, RMC}}, 5610 + {"dquaq.", ZRC(63,3,1), Z2_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp, RMC}}, 5611 + 5612 + {"xsaddqp", XRC(63,4,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5613 + {"xsaddqpo", XRC(63,4,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5614 + 5615 + {"xsrqpi", ZRC(63,5,0), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}}, 5616 + {"xsrqpix", ZRC(63,5,1), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}}, 5617 + 5618 + {"fcpsgn", XRC(63,8,0), X_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FRT, FRA, FRB}}, 5619 + {"fcpsgn.", XRC(63,8,1), X_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FRT, FRA, FRB}}, 5620 + 5621 + {"frsp", XRC(63,12,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}}, 5622 + {"frsp.", XRC(63,12,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}}, 5623 + 5624 + {"fctiw", XRC(63,14,0), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}}, 5625 + {"fcir", XRC(63,14,0), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}}, 5626 + {"fctiw.", XRC(63,14,1), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}}, 5627 + {"fcir.", XRC(63,14,1), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}}, 5628 + 5629 + {"fctiwz", XRC(63,15,0), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}}, 5630 + {"fcirz", XRC(63,15,0), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}}, 5631 + {"fctiwz.", XRC(63,15,1), XRA_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRB}}, 5632 + {"fcirz.", XRC(63,15,1), XRA_MASK, PWR2COM, PPCVLE, {FRT, FRB}}, 5633 + 5634 + {"fdiv", A(63,18,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}}, 5635 + {"fd", A(63,18,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}}, 5636 + {"fdiv.", A(63,18,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}}, 5637 + {"fd.", A(63,18,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}}, 5638 + 5639 + {"fsub", A(63,20,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}}, 5640 + {"fs", A(63,20,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}}, 5641 + {"fsub.", A(63,20,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}}, 5642 + {"fs.", A(63,20,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}}, 5643 + 5644 + {"fadd", A(63,21,0), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}}, 5645 + {"fa", A(63,21,0), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}}, 5646 + {"fadd.", A(63,21,1), AFRC_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRB}}, 5647 + {"fa.", A(63,21,1), AFRC_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRB}}, 5648 + 5649 + {"fsqrt", A(63,22,0), AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}}, 5650 + {"fsqrt.", A(63,22,1), AFRAFRC_MASK, PPCPWR2, TITAN|PPCVLE, {FRT, FRB}}, 5651 + 5652 + {"fsel", A(63,23,0), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5653 + {"fsel.", A(63,23,1), A_MASK, PPC, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5654 + 5655 + {"fre", A(63,24,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5656 + {"fre", A(63,24,0), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}}, 5657 + {"fre.", A(63,24,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5658 + {"fre.", A(63,24,1), AFRALFRC_MASK, POWER5, POWER7|PPCVLE, {FRT, FRB, A_L}}, 5659 + 5660 + {"fmul", A(63,25,0), AFRB_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC}}, 5661 + {"fm", A(63,25,0), AFRB_MASK, PWRCOM, PPCVLE|PPCVLE, {FRT, FRA, FRC}}, 5662 + {"fmul.", A(63,25,1), AFRB_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC}}, 5663 + {"fm.", A(63,25,1), AFRB_MASK, PWRCOM, PPCVLE|PPCVLE, {FRT, FRA, FRC}}, 5664 + 5665 + {"frsqrte", A(63,26,0), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5666 + {"frsqrte", A(63,26,0), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}}, 5667 + {"frsqrte.", A(63,26,1), AFRAFRC_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5668 + {"frsqrte.", A(63,26,1), AFRALFRC_MASK, PPC, POWER7|PPCVLE, {FRT, FRB, A_L}}, 5669 + 5670 + {"fmsub", A(63,28,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5671 + {"fms", A(63,28,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}}, 5672 + {"fmsub.", A(63,28,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5673 + {"fms.", A(63,28,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}}, 5674 + 5675 + {"fmadd", A(63,29,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5676 + {"fma", A(63,29,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}}, 5677 + {"fmadd.", A(63,29,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5678 + {"fma.", A(63,29,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}}, 5679 + 5680 + {"fnmsub", A(63,30,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5681 + {"fnms", A(63,30,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}}, 5682 + {"fnmsub.", A(63,30,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5683 + {"fnms.", A(63,30,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}}, 5684 + 5685 + {"fnmadd", A(63,31,0), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5686 + {"fnma", A(63,31,0), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}}, 5687 + {"fnmadd.", A(63,31,1), A_MASK, PPCCOM, PPCEFS|PPCVLE, {FRT, FRA, FRC, FRB}}, 5688 + {"fnma.", A(63,31,1), A_MASK, PWRCOM, PPCVLE, {FRT, FRA, FRC, FRB}}, 5689 + 5690 + {"fcmpo", X(63,32), XBF_MASK, COM, PPCEFS|PPCVLE, {BF, FRA, FRB}}, 5691 + 5692 + {"dmulq", XRC(63,34,0), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}}, 5693 + {"dmulq.", XRC(63,34,1), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}}, 5694 + 5695 + {"drrndq", ZRC(63,35,0), Z2_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp, RMC}}, 5696 + {"drrndq.", ZRC(63,35,1), Z2_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp, RMC}}, 5697 + 5698 + {"xsmulqp", XRC(63,36,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5699 + {"xsmulqpo", XRC(63,36,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5700 + 5701 + {"xsrqpxp", Z(63,37), Z2_MASK, PPCVSX3, PPCVLE, {R, VD, VB, RMC}}, 5702 + 5703 + {"mtfsb1", XRC(63,38,0), XRARB_MASK, COM, PPCVLE, {BT}}, 5704 + {"mtfsb1.", XRC(63,38,1), XRARB_MASK, COM, PPCVLE, {BT}}, 5705 + 5706 + {"fneg", XRC(63,40,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}}, 5707 + {"fneg.", XRC(63,40,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}}, 5708 + 5709 + {"mcrfs", X(63,64), XRB_MASK|(3<<21)|(3<<16), COM, PPCVLE, {BF, BFA}}, 5710 + 5711 + {"dscliq", ZRC(63,66,0), Z_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}}, 5712 + {"dscliq.", ZRC(63,66,1), Z_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}}, 5713 + 5714 + {"dquaiq", ZRC(63,67,0), Z2_MASK, POWER6, PPCVLE, {TE, FRTp, FRBp, RMC}}, 5715 + {"dquaiq.", ZRC(63,67,1), Z2_MASK, POWER6, PPCVLE, {TE, FRTp, FRBp, RMC}}, 5716 + 5717 + {"mtfsb0", XRC(63,70,0), XRARB_MASK, COM, PPCVLE, {BT}}, 5718 + {"mtfsb0.", XRC(63,70,1), XRARB_MASK, COM, PPCVLE, {BT}}, 5719 + 5720 + {"fmr", XRC(63,72,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}}, 5721 + {"fmr.", XRC(63,72,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}}, 5722 + 5723 + {"dscriq", ZRC(63,98,0), Z_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}}, 5724 + {"dscriq.", ZRC(63,98,1), Z_MASK, POWER6, PPCVLE, {FRTp, FRAp, SH16}}, 5725 + 5726 + {"drintxq", ZRC(63,99,0), Z2_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}}, 5727 + {"drintxq.", ZRC(63,99,1), Z2_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}}, 5728 + 5729 + {"xscpsgnqp", X(63,100), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5730 + 5731 + {"ftdiv", X(63,128), XBF_MASK, POWER7, PPCVLE, {BF, FRA, FRB}}, 5732 + 5733 + {"dcmpoq", X(63,130), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}}, 5734 + 5735 + {"xscmpoqp", X(63,132), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}}, 5736 + 5737 + {"mtfsfi", XRC(63,134,0), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}}, 5738 + {"mtfsfi", XRC(63,134,0), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}}, 5739 + {"mtfsfi.", XRC(63,134,1), XWRA_MASK|(3<<21)|(1<<11), POWER6|PPCA2|PPC476, PPCVLE, {BFF, U, W}}, 5740 + {"mtfsfi.", XRC(63,134,1), XRA_MASK|(3<<21)|(1<<11), COM, POWER6|PPCA2|PPC476|PPCVLE, {BFF, U}}, 5741 + 5742 + {"fnabs", XRC(63,136,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}}, 5743 + {"fnabs.", XRC(63,136,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}}, 5744 + 5745 + {"fctiwu", XRC(63,142,0), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5746 + {"fctiwu.", XRC(63,142,1), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5747 + {"fctiwuz", XRC(63,143,0), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5748 + {"fctiwuz.", XRC(63,143,1), XRA_MASK, POWER7, PPCVLE, {FRT, FRB}}, 5749 + 5750 + {"ftsqrt", X(63,160), XBF_MASK|FRA_MASK, POWER7, PPCVLE, {BF, FRB}}, 5751 + 5752 + {"dtstexq", X(63,162), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}}, 5753 + 5754 + {"xscmpexpqp", X(63,164), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}}, 5755 + 5756 + {"dtstdcq", Z(63,194), Z_MASK, POWER6, PPCVLE, {BF, FRAp, DCM}}, 5757 + {"dtstdgq", Z(63,226), Z_MASK, POWER6, PPCVLE, {BF, FRAp, DGM}}, 5758 + 5759 + {"drintnq", ZRC(63,227,0), Z2_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}}, 5760 + {"drintnq.", ZRC(63,227,1), Z2_MASK, POWER6, PPCVLE, {R, FRTp, FRBp, RMC}}, 5761 + 5762 + {"dctqpq", XRC(63,258,0), X_MASK, POWER6, PPCVLE, {FRTp, FRB}}, 5763 + {"dctqpq.", XRC(63,258,1), X_MASK, POWER6, PPCVLE, {FRTp, FRB}}, 5764 + 5765 + {"fabs", XRC(63,264,0), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}}, 5766 + {"fabs.", XRC(63,264,1), XRA_MASK, COM, PPCEFS|PPCVLE, {FRT, FRB}}, 5767 + 5768 + {"dctfixq", XRC(63,290,0), X_MASK, POWER6, PPCVLE, {FRT, FRBp}}, 5769 + {"dctfixq.", XRC(63,290,1), X_MASK, POWER6, PPCVLE, {FRT, FRBp}}, 5770 + 5771 + {"ddedpdq", XRC(63,322,0), X_MASK, POWER6, PPCVLE, {SP, FRTp, FRBp}}, 5772 + {"ddedpdq.", XRC(63,322,1), X_MASK, POWER6, PPCVLE, {SP, FRTp, FRBp}}, 5773 + 5774 + {"dxexq", XRC(63,354,0), X_MASK, POWER6, PPCVLE, {FRT, FRBp}}, 5775 + {"dxexq.", XRC(63,354,1), X_MASK, POWER6, PPCVLE, {FRT, FRBp}}, 5776 + 5777 + {"xsmaddqp", XRC(63,388,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5778 + {"xsmaddqpo", XRC(63,388,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5779 + 5780 + {"frin", XRC(63,392,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}}, 5781 + {"frin.", XRC(63,392,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}}, 5782 + 5783 + {"xsmsubqp", XRC(63,420,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5784 + {"xsmsubqpo", XRC(63,420,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5785 + 5786 + {"friz", XRC(63,424,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}}, 5787 + {"friz.", XRC(63,424,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}}, 5788 + 5789 + {"xsnmaddqp", XRC(63,452,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5790 + {"xsnmaddqpo", XRC(63,452,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5791 + 5792 + {"frip", XRC(63,456,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}}, 5793 + {"frip.", XRC(63,456,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}}, 5794 + 5795 + {"xsnmsubqp", XRC(63,484,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5796 + {"xsnmsubqpo", XRC(63,484,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5797 + 5798 + {"frim", XRC(63,488,0), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}}, 5799 + {"frim.", XRC(63,488,1), XRA_MASK, POWER5, PPCVLE, {FRT, FRB}}, 5800 + 5801 + {"dsubq", XRC(63,514,0), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}}, 5802 + {"dsubq.", XRC(63,514,1), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}}, 5803 + 5804 + {"xssubqp", XRC(63,516,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5805 + {"xssubqpo", XRC(63,516,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5806 + 5807 + {"ddivq", XRC(63,546,0), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}}, 5808 + {"ddivq.", XRC(63,546,1), X_MASK, POWER6, PPCVLE, {FRTp, FRAp, FRBp}}, 5809 + 5810 + {"xsdivqp", XRC(63,548,0), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5811 + {"xsdivqpo", XRC(63,548,1), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5812 + 5813 + {"mffs", XRC(63,583,0), XRARB_MASK, COM, PPCEFS|PPCVLE, {FRT}}, 5814 + {"mffs.", XRC(63,583,1), XRARB_MASK, COM, PPCEFS|PPCVLE, {FRT}}, 5815 + 5816 + {"mffsce", XMMF(63,583,0,1), XMMF_MASK|RB_MASK, POWER9, PPCVLE, {FRT}}, 5817 + {"mffscdrn", XMMF(63,583,2,4), XMMF_MASK, POWER9, PPCVLE, {FRT, FRB}}, 5818 + {"mffscdrni", XMMF(63,583,2,5), XMMF_MASK|(3<<14), POWER9, PPCVLE, {FRT, DRM}}, 5819 + {"mffscrn", XMMF(63,583,2,6), XMMF_MASK, POWER9, PPCVLE, {FRT, FRB}}, 5820 + {"mffscrni", XMMF(63,583,2,7), XMMF_MASK|(7<<13), POWER9, PPCVLE, {FRT, RM}}, 5821 + {"mffsl", XMMF(63,583,3,0), XMMF_MASK|RB_MASK, POWER9, PPCVLE, {FRT}}, 5822 + 5823 + {"dcmpuq", X(63,642), X_MASK, POWER6, PPCVLE, {BF, FRAp, FRBp}}, 5824 + 5825 + {"xscmpuqp", X(63,644), XBF_MASK, PPCVSX3, PPCVLE, {BF, VA, VB}}, 5826 + 5827 + {"dtstsfq", X(63,674), X_MASK, POWER6, PPCVLE, {BF, FRA, FRBp}}, 5828 + {"dtstsfiq", X(63,675), X_MASK|1<<22,POWER9, PPCVLE, {BF, UIM6, FRBp}}, 5829 + 5830 + {"xststdcqp", X(63,708), X_MASK, PPCVSX3, PPCVLE, {BF, VB, DCMX}}, 5831 + 5832 + {"mtfsf", XFL(63,711,0), XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FLM, FRB, XFL_L, W}}, 5833 + {"mtfsf", XFL(63,711,0), XFL_MASK, COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}}, 5834 + {"mtfsf.", XFL(63,711,1), XFL_MASK, POWER6|PPCA2|PPC476, PPCVLE, {FLM, FRB, XFL_L, W}}, 5835 + {"mtfsf.", XFL(63,711,1), XFL_MASK, COM, POWER6|PPCA2|PPC476|PPCEFS|PPCVLE, {FLM, FRB}}, 5836 + 5837 + {"drdpq", XRC(63,770,0), X_MASK, POWER6, PPCVLE, {FRTp, FRBp}}, 5838 + {"drdpq.", XRC(63,770,1), X_MASK, POWER6, PPCVLE, {FRTp, FRBp}}, 5839 + 5840 + {"dcffixq", XRC(63,802,0), X_MASK, POWER6, PPCVLE, {FRTp, FRB}}, 5841 + {"dcffixq.", XRC(63,802,1), X_MASK, POWER6, PPCVLE, {FRTp, FRB}}, 5842 + 5843 + {"xsabsqp", XVA(63,804,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5844 + {"xsxexpqp", XVA(63,804,2), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5845 + {"xsnabsqp", XVA(63,804,8), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5846 + {"xsnegqp", XVA(63,804,16), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5847 + {"xsxsigqp", XVA(63,804,18), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5848 + {"xssqrtqp", XVARC(63,804,27,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5849 + {"xssqrtqpo", XVARC(63,804,27,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5850 + 5851 + {"fctid", XRC(63,814,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}}, 5852 + {"fctid", XRC(63,814,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}}, 5853 + {"fctid.", XRC(63,814,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}}, 5854 + {"fctid.", XRC(63,814,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}}, 5855 + 5856 + {"fctidz", XRC(63,815,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}}, 5857 + {"fctidz", XRC(63,815,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}}, 5858 + {"fctidz.", XRC(63,815,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}}, 5859 + {"fctidz.", XRC(63,815,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}}, 5860 + 5861 + {"denbcdq", XRC(63,834,0), X_MASK, POWER6, PPCVLE, {S, FRTp, FRBp}}, 5862 + {"denbcdq.", XRC(63,834,1), X_MASK, POWER6, PPCVLE, {S, FRTp, FRBp}}, 5863 + 5864 + {"xscvqpuwz", XVA(63,836,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5865 + {"xscvudqp", XVA(63,836,2), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5866 + {"xscvqpswz", XVA(63,836,9), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5867 + {"xscvsdqp", XVA(63,836,10), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5868 + {"xscvqpudz", XVA(63,836,17), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5869 + {"xscvqpdp", XVARC(63,836,20,0), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5870 + {"xscvqpdpo", XVARC(63,836,20,1), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5871 + {"xscvdpqp", XVA(63,836,22), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5872 + {"xscvqpsdz", XVA(63,836,25), XVA_MASK, PPCVSX3, PPCVLE, {VD, VB}}, 5873 + 5874 + {"fmrgow", X(63,838), X_MASK, PPCVSX2, PPCVLE, {FRT, FRA, FRB}}, 5875 + 5876 + {"fcfid", XRC(63,846,0), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}}, 5877 + {"fcfid", XRC(63,846,0), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}}, 5878 + {"fcfid.", XRC(63,846,1), XRA_MASK, PPC64, PPCVLE, {FRT, FRB}}, 5879 + {"fcfid.", XRC(63,846,1), XRA_MASK, PPC476, PPCVLE, {FRT, FRB}}, 5880 + 5881 + {"diexq", XRC(63,866,0), X_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp}}, 5882 + {"diexq.", XRC(63,866,1), X_MASK, POWER6, PPCVLE, {FRTp, FRA, FRBp}}, 5883 + 5884 + {"xsiexpqp", X(63,868), X_MASK, PPCVSX3, PPCVLE, {VD, VA, VB}}, 5885 + 5886 + {"fctidu", XRC(63,942,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}}, 5887 + {"fctidu.", XRC(63,942,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}}, 5888 + 5889 + {"fctiduz", XRC(63,943,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}}, 5890 + {"fctiduz.", XRC(63,943,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}}, 5891 + 5892 + {"fmrgew", X(63,966), X_MASK, PPCVSX2, PPCVLE, {FRT, FRA, FRB}}, 5893 + 5894 + {"fcfidu", XRC(63,974,0), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}}, 5895 + {"fcfidu.", XRC(63,974,1), XRA_MASK, POWER7|PPCA2, PPCVLE, {FRT, FRB}}, 6020 5896 }; 6021 5897 6022 - const int powerpc_num_opcodes = ARRAY_SIZE(powerpc_opcodes); 5898 + const int powerpc_num_opcodes = 5899 + sizeof (powerpc_opcodes) / sizeof (powerpc_opcodes[0]); 5900 + 5901 + /* The VLE opcode table. 5902 + 5903 + The format of this opcode table is the same as the main opcode table. */ 5904 + 5905 + const struct powerpc_opcode vle_opcodes[] = { 5906 + {"se_illegal", C(0), C_MASK, PPCVLE, 0, {}}, 5907 + {"se_isync", C(1), C_MASK, PPCVLE, 0, {}}, 5908 + {"se_sc", C(2), C_MASK, PPCVLE, 0, {}}, 5909 + {"se_blr", C_LK(2,0), C_LK_MASK, PPCVLE, 0, {}}, 5910 + {"se_blrl", C_LK(2,1), C_LK_MASK, PPCVLE, 0, {}}, 5911 + {"se_bctr", C_LK(3,0), C_LK_MASK, PPCVLE, 0, {}}, 5912 + {"se_bctrl", C_LK(3,1), C_LK_MASK, PPCVLE, 0, {}}, 5913 + {"se_rfi", C(8), C_MASK, PPCVLE, 0, {}}, 5914 + {"se_rfci", C(9), C_MASK, PPCVLE, 0, {}}, 5915 + {"se_rfdi", C(10), C_MASK, PPCVLE, 0, {}}, 5916 + {"se_rfmci", C(11), C_MASK, PPCRFMCI|PPCVLE, 0, {}}, 5917 + {"se_not", SE_R(0,2), SE_R_MASK, PPCVLE, 0, {RX}}, 5918 + {"se_neg", SE_R(0,3), SE_R_MASK, PPCVLE, 0, {RX}}, 5919 + {"se_mflr", SE_R(0,8), SE_R_MASK, PPCVLE, 0, {RX}}, 5920 + {"se_mtlr", SE_R(0,9), SE_R_MASK, PPCVLE, 0, {RX}}, 5921 + {"se_mfctr", SE_R(0,10), SE_R_MASK, PPCVLE, 0, {RX}}, 5922 + {"se_mtctr", SE_R(0,11), SE_R_MASK, PPCVLE, 0, {RX}}, 5923 + {"se_extzb", SE_R(0,12), SE_R_MASK, PPCVLE, 0, {RX}}, 5924 + {"se_extsb", SE_R(0,13), SE_R_MASK, PPCVLE, 0, {RX}}, 5925 + {"se_extzh", SE_R(0,14), SE_R_MASK, PPCVLE, 0, {RX}}, 5926 + {"se_extsh", SE_R(0,15), SE_R_MASK, PPCVLE, 0, {RX}}, 5927 + {"se_mr", SE_RR(0,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 5928 + {"se_mtar", SE_RR(0,2), SE_RR_MASK, PPCVLE, 0, {ARX, RY}}, 5929 + {"se_mfar", SE_RR(0,3), SE_RR_MASK, PPCVLE, 0, {RX, ARY}}, 5930 + {"se_add", SE_RR(1,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 5931 + {"se_mullw", SE_RR(1,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 5932 + {"se_sub", SE_RR(1,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 5933 + {"se_subf", SE_RR(1,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 5934 + {"se_cmp", SE_RR(3,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 5935 + {"se_cmpl", SE_RR(3,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 5936 + {"se_cmph", SE_RR(3,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 5937 + {"se_cmphl", SE_RR(3,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 5938 + 5939 + {"e_cmpi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}}, 5940 + {"e_cmpwi", SCI8BF(6,0,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}}, 5941 + {"e_cmpli", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}}, 5942 + {"e_cmplwi", SCI8BF(6,1,21), SCI8BF_MASK, PPCVLE, 0, {CRD32, RA, SCLSCI8}}, 5943 + {"e_addi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}}, 5944 + {"e_subi", SCI8(6,16), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}}, 5945 + {"e_addi.", SCI8(6,17), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}}, 5946 + {"e_addic", SCI8(6,18), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}}, 5947 + {"e_subic", SCI8(6,18), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}}, 5948 + {"e_addic.", SCI8(6,19), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}}, 5949 + {"e_subic.", SCI8(6,19), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8N}}, 5950 + {"e_mulli", SCI8(6,20), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}}, 5951 + {"e_subfic", SCI8(6,22), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}}, 5952 + {"e_subfic.", SCI8(6,23), SCI8_MASK, PPCVLE, 0, {RT, RA, SCLSCI8}}, 5953 + {"e_andi", SCI8(6,24), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}}, 5954 + {"e_andi.", SCI8(6,25), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}}, 5955 + {"e_nop", SCI8(6,26), 0xffffffff, PPCVLE, 0, {0}}, 5956 + {"e_ori", SCI8(6,26), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}}, 5957 + {"e_ori.", SCI8(6,27), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}}, 5958 + {"e_xori", SCI8(6,28), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}}, 5959 + {"e_xori.", SCI8(6,29), SCI8_MASK, PPCVLE, 0, {RA, RS, SCLSCI8}}, 5960 + {"e_lbzu", OPVUP(6,0), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}}, 5961 + {"e_lhau", OPVUP(6,3), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}}, 5962 + {"e_lhzu", OPVUP(6,1), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}}, 5963 + {"e_lmw", OPVUP(6,8), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}}, 5964 + {"e_lwzu", OPVUP(6,2), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}}, 5965 + {"e_stbu", OPVUP(6,4), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}}, 5966 + {"e_sthu", OPVUP(6,5), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}}, 5967 + {"e_stwu", OPVUP(6,6), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}}, 5968 + {"e_stmw", OPVUP(6,9), OPVUP_MASK, PPCVLE, 0, {RT, D8, RA0}}, 5969 + {"e_ldmvgprw", OPVUPRT(6,16,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}}, 5970 + {"e_stmvgprw", OPVUPRT(6,17,0),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}}, 5971 + {"e_ldmvsprw", OPVUPRT(6,16,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}}, 5972 + {"e_stmvsprw", OPVUPRT(6,17,1),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}}, 5973 + {"e_ldmvsrrw", OPVUPRT(6,16,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}}, 5974 + {"e_stmvsrrw", OPVUPRT(6,17,4),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}}, 5975 + {"e_ldmvcsrrw", OPVUPRT(6,16,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}}, 5976 + {"e_stmvcsrrw", OPVUPRT(6,17,5),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}}, 5977 + {"e_ldmvdsrrw", OPVUPRT(6,16,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}}, 5978 + {"e_stmvdsrrw", OPVUPRT(6,17,6),OPVUPRT_MASK, PPCVLE, 0, {D8, RA0}}, 5979 + {"e_add16i", OP(7), OP_MASK, PPCVLE, 0, {RT, RA, SI}}, 5980 + {"e_la", OP(7), OP_MASK, PPCVLE, 0, {RT, D, RA0}}, 5981 + {"e_sub16i", OP(7), OP_MASK, PPCVLE, 0, {RT, RA, NSI}}, 5982 + 5983 + {"se_addi", SE_IM5(8,0), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}}, 5984 + {"se_cmpli", SE_IM5(8,1), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}}, 5985 + {"se_subi", SE_IM5(9,0), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}}, 5986 + {"se_subi.", SE_IM5(9,1), SE_IM5_MASK, PPCVLE, 0, {RX, OIMM5}}, 5987 + {"se_cmpi", SE_IM5(10,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}}, 5988 + {"se_bmaski", SE_IM5(11,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}}, 5989 + {"se_andi", SE_IM5(11,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}}, 5990 + 5991 + {"e_lbz", OP(12), OP_MASK, PPCVLE, 0, {RT, D, RA0}}, 5992 + {"e_stb", OP(13), OP_MASK, PPCVLE, 0, {RT, D, RA0}}, 5993 + {"e_lha", OP(14), OP_MASK, PPCVLE, 0, {RT, D, RA0}}, 5994 + 5995 + {"se_srw", SE_RR(16,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 5996 + {"se_sraw", SE_RR(16,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 5997 + {"se_slw", SE_RR(16,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 5998 + {"se_nop", SE_RR(17,0), 0xffff, PPCVLE, 0, {0}}, 5999 + {"se_or", SE_RR(17,0), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 6000 + {"se_andc", SE_RR(17,1), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 6001 + {"se_and", SE_RR(17,2), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 6002 + {"se_and.", SE_RR(17,3), SE_RR_MASK, PPCVLE, 0, {RX, RY}}, 6003 + {"se_li", IM7(9), IM7_MASK, PPCVLE, 0, {RX, UI7}}, 6004 + 6005 + {"e_lwz", OP(20), OP_MASK, PPCVLE, 0, {RT, D, RA0}}, 6006 + {"e_stw", OP(21), OP_MASK, PPCVLE, 0, {RT, D, RA0}}, 6007 + {"e_lhz", OP(22), OP_MASK, PPCVLE, 0, {RT, D, RA0}}, 6008 + {"e_sth", OP(23), OP_MASK, PPCVLE, 0, {RT, D, RA0}}, 6009 + 6010 + {"se_bclri", SE_IM5(24,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}}, 6011 + {"se_bgeni", SE_IM5(24,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}}, 6012 + {"se_bseti", SE_IM5(25,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}}, 6013 + {"se_btsti", SE_IM5(25,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}}, 6014 + {"se_srwi", SE_IM5(26,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}}, 6015 + {"se_srawi", SE_IM5(26,1), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}}, 6016 + {"se_slwi", SE_IM5(27,0), SE_IM5_MASK, PPCVLE, 0, {RX, UI5}}, 6017 + 6018 + {"e_lis", I16L(28,28), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}}, 6019 + {"e_and2is.", I16L(28,29), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}}, 6020 + {"e_or2is", I16L(28,26), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}}, 6021 + {"e_and2i.", I16L(28,25), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}}, 6022 + {"e_or2i", I16L(28,24), I16L_MASK, PPCVLE, 0, {RD, VLEUIMML}}, 6023 + {"e_cmphl16i", IA16(28,23), IA16_MASK, PPCVLE, 0, {RA, VLEUIMM}}, 6024 + {"e_cmph16i", IA16(28,22), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}}, 6025 + {"e_cmpl16i", I16A(28,21), I16A_MASK, PPCVLE, 0, {RA, VLEUIMM}}, 6026 + {"e_mull2i", I16A(28,20), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}}, 6027 + {"e_cmp16i", IA16(28,19), IA16_MASK, PPCVLE, 0, {RA, VLESIMM}}, 6028 + {"e_sub2is", I16A(28,18), I16A_MASK, PPCVLE, 0, {RA, VLENSIMM}}, 6029 + {"e_add2is", I16A(28,18), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}}, 6030 + {"e_sub2i.", I16A(28,17), I16A_MASK, PPCVLE, 0, {RA, VLENSIMM}}, 6031 + {"e_add2i.", I16A(28,17), I16A_MASK, PPCVLE, 0, {RA, VLESIMM}}, 6032 + {"e_li", LI20(28,0), LI20_MASK, PPCVLE, 0, {RT, IMM20}}, 6033 + {"e_rlwimi", M(29,0), M_MASK, PPCVLE, 0, {RA, RS, SH, MB, ME}}, 6034 + {"e_rlwinm", M(29,1), M_MASK, PPCVLE, 0, {RA, RT, SH, MBE, ME}}, 6035 + {"e_b", BD24(30,0,0), BD24_MASK, PPCVLE, 0, {B24}}, 6036 + {"e_bl", BD24(30,0,1), BD24_MASK, PPCVLE, 0, {B24}}, 6037 + {"e_bdnz", EBD15(30,8,BO32DNZ,0), EBD15_MASK, PPCVLE, 0, {B15}}, 6038 + {"e_bdnzl", EBD15(30,8,BO32DNZ,1), EBD15_MASK, PPCVLE, 0, {B15}}, 6039 + {"e_bdz", EBD15(30,8,BO32DZ,0), EBD15_MASK, PPCVLE, 0, {B15}}, 6040 + {"e_bdzl", EBD15(30,8,BO32DZ,1), EBD15_MASK, PPCVLE, 0, {B15}}, 6041 + {"e_bge", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6042 + {"e_bgel", EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6043 + {"e_bnl", EBD15BI(30,8,BO32F,CBLT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6044 + {"e_bnll", EBD15BI(30,8,BO32F,CBLT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6045 + {"e_blt", EBD15BI(30,8,BO32T,CBLT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6046 + {"e_bltl", EBD15BI(30,8,BO32T,CBLT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6047 + {"e_bgt", EBD15BI(30,8,BO32T,CBGT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6048 + {"e_bgtl", EBD15BI(30,8,BO32T,CBGT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6049 + {"e_ble", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6050 + {"e_blel", EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6051 + {"e_bng", EBD15BI(30,8,BO32F,CBGT,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6052 + {"e_bngl", EBD15BI(30,8,BO32F,CBGT,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6053 + {"e_bne", EBD15BI(30,8,BO32F,CBEQ,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6054 + {"e_bnel", EBD15BI(30,8,BO32F,CBEQ,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6055 + {"e_beq", EBD15BI(30,8,BO32T,CBEQ,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6056 + {"e_beql", EBD15BI(30,8,BO32T,CBEQ,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6057 + {"e_bso", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6058 + {"e_bsol", EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6059 + {"e_bun", EBD15BI(30,8,BO32T,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6060 + {"e_bunl", EBD15BI(30,8,BO32T,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6061 + {"e_bns", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6062 + {"e_bnsl", EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6063 + {"e_bnu", EBD15BI(30,8,BO32F,CBSO,0), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6064 + {"e_bnul", EBD15BI(30,8,BO32F,CBSO,1), EBD15BI_MASK, PPCVLE, 0, {CRS,B15}}, 6065 + {"e_bc", BD15(30,8,0), BD15_MASK, PPCVLE, 0, {BO32, BI32, B15}}, 6066 + {"e_bcl", BD15(30,8,1), BD15_MASK, PPCVLE, 0, {BO32, BI32, B15}}, 6067 + 6068 + {"e_bf", EBD15(30,8,BO32F,0), EBD15_MASK, PPCVLE, 0, {BI32,B15}}, 6069 + {"e_bfl", EBD15(30,8,BO32F,1), EBD15_MASK, PPCVLE, 0, {BI32,B15}}, 6070 + {"e_bt", EBD15(30,8,BO32T,0), EBD15_MASK, PPCVLE, 0, {BI32,B15}}, 6071 + {"e_btl", EBD15(30,8,BO32T,1), EBD15_MASK, PPCVLE, 0, {BI32,B15}}, 6072 + 6073 + {"e_cmph", X(31,14), X_MASK, PPCVLE, 0, {CRD, RA, RB}}, 6074 + {"e_cmphl", X(31,46), X_MASK, PPCVLE, 0, {CRD, RA, RB}}, 6075 + {"e_crandc", XL(31,129), XL_MASK, PPCVLE, 0, {BT, BA, BB}}, 6076 + {"e_crnand", XL(31,225), XL_MASK, PPCVLE, 0, {BT, BA, BB}}, 6077 + {"e_crnot", XL(31,33), XL_MASK, PPCVLE, 0, {BT, BA, BBA}}, 6078 + {"e_crnor", XL(31,33), XL_MASK, PPCVLE, 0, {BT, BA, BB}}, 6079 + {"e_crclr", XL(31,193), XL_MASK, PPCVLE, 0, {BT, BAT, BBA}}, 6080 + {"e_crxor", XL(31,193), XL_MASK, PPCVLE, 0, {BT, BA, BB}}, 6081 + {"e_mcrf", XL(31,16), XL_MASK, PPCVLE, 0, {CRD, CR}}, 6082 + {"e_slwi", EX(31,112), EX_MASK, PPCVLE, 0, {RA, RS, SH}}, 6083 + {"e_slwi.", EX(31,113), EX_MASK, PPCVLE, 0, {RA, RS, SH}}, 6084 + 6085 + {"e_crand", XL(31,257), XL_MASK, PPCVLE, 0, {BT, BA, BB}}, 6086 + 6087 + {"e_rlw", EX(31,560), EX_MASK, PPCVLE, 0, {RA, RS, RB}}, 6088 + {"e_rlw.", EX(31,561), EX_MASK, PPCVLE, 0, {RA, RS, RB}}, 6089 + 6090 + {"e_crset", XL(31,289), XL_MASK, PPCVLE, 0, {BT, BAT, BBA}}, 6091 + {"e_creqv", XL(31,289), XL_MASK, PPCVLE, 0, {BT, BA, BB}}, 6092 + 6093 + {"e_rlwi", EX(31,624), EX_MASK, PPCVLE, 0, {RA, RS, SH}}, 6094 + {"e_rlwi.", EX(31,625), EX_MASK, PPCVLE, 0, {RA, RS, SH}}, 6095 + 6096 + {"e_crorc", XL(31,417), XL_MASK, PPCVLE, 0, {BT, BA, BB}}, 6097 + 6098 + {"e_crmove", XL(31,449), XL_MASK, PPCVLE, 0, {BT, BA, BBA}}, 6099 + {"e_cror", XL(31,449), XL_MASK, PPCVLE, 0, {BT, BA, BB}}, 6100 + 6101 + {"mtmas1", XSPR(31,467,625), XSPR_MASK, PPCVLE, 0, {RS}}, 6102 + 6103 + {"e_srwi", EX(31,1136), EX_MASK, PPCVLE, 0, {RA, RS, SH}}, 6104 + {"e_srwi.", EX(31,1137), EX_MASK, PPCVLE, 0, {RA, RS, SH}}, 6105 + 6106 + {"se_lbz", SD4(8), SD4_MASK, PPCVLE, 0, {RZ, SE_SD, RX}}, 6107 + 6108 + {"se_stb", SD4(9), SD4_MASK, PPCVLE, 0, {RZ, SE_SD, RX}}, 6109 + 6110 + {"se_lhz", SD4(10), SD4_MASK, PPCVLE, 0, {RZ, SE_SDH, RX}}, 6111 + 6112 + {"se_sth", SD4(11), SD4_MASK, PPCVLE, 0, {RZ, SE_SDH, RX}}, 6113 + 6114 + {"se_lwz", SD4(12), SD4_MASK, PPCVLE, 0, {RZ, SE_SDW, RX}}, 6115 + 6116 + {"se_stw", SD4(13), SD4_MASK, PPCVLE, 0, {RZ, SE_SDW, RX}}, 6117 + 6118 + {"se_bge", EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, 0, {B8}}, 6119 + {"se_bnl", EBD8IO(28,0,0), EBD8IO3_MASK, PPCVLE, 0, {B8}}, 6120 + {"se_ble", EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, 0, {B8}}, 6121 + {"se_bng", EBD8IO(28,0,1), EBD8IO3_MASK, PPCVLE, 0, {B8}}, 6122 + {"se_bne", EBD8IO(28,0,2), EBD8IO3_MASK, PPCVLE, 0, {B8}}, 6123 + {"se_bns", EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, 0, {B8}}, 6124 + {"se_bnu", EBD8IO(28,0,3), EBD8IO3_MASK, PPCVLE, 0, {B8}}, 6125 + {"se_bf", EBD8IO(28,0,0), EBD8IO2_MASK, PPCVLE, 0, {BI16, B8}}, 6126 + {"se_blt", EBD8IO(28,1,0), EBD8IO3_MASK, PPCVLE, 0, {B8}}, 6127 + {"se_bgt", EBD8IO(28,1,1), EBD8IO3_MASK, PPCVLE, 0, {B8}}, 6128 + {"se_beq", EBD8IO(28,1,2), EBD8IO3_MASK, PPCVLE, 0, {B8}}, 6129 + {"se_bso", EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, 0, {B8}}, 6130 + {"se_bun", EBD8IO(28,1,3), EBD8IO3_MASK, PPCVLE, 0, {B8}}, 6131 + {"se_bt", EBD8IO(28,1,0), EBD8IO2_MASK, PPCVLE, 0, {BI16, B8}}, 6132 + {"se_bc", BD8IO(28), BD8IO_MASK, PPCVLE, 0, {BO16, BI16, B8}}, 6133 + {"se_b", BD8(58,0,0), BD8_MASK, PPCVLE, 0, {B8}}, 6134 + {"se_bl", BD8(58,0,1), BD8_MASK, PPCVLE, 0, {B8}}, 6135 + }; 6136 + 6137 + const int vle_num_opcodes = 6138 + sizeof (vle_opcodes) / sizeof (vle_opcodes[0]); 6023 6139 6024 6140 /* The macro table. This is only used by the assembler. */ 6025 6141 ··· 7235 4949 support extracting the whole word (32 bits in this case). */ 7236 4950 7237 4951 const struct powerpc_macro powerpc_macros[] = { 7238 - { "extldi", 4, PPC64, "rldicr %0,%1,%3,(%2)-1" }, 7239 - { "extldi.", 4, PPC64, "rldicr. %0,%1,%3,(%2)-1" }, 7240 - { "extrdi", 4, PPC64, "rldicl %0,%1,(%2)+(%3),64-(%2)" }, 7241 - { "extrdi.", 4, PPC64, "rldicl. %0,%1,(%2)+(%3),64-(%2)" }, 7242 - { "insrdi", 4, PPC64, "rldimi %0,%1,64-((%2)+(%3)),%3" }, 7243 - { "insrdi.", 4, PPC64, "rldimi. %0,%1,64-((%2)+(%3)),%3" }, 7244 - { "rotrdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),0" }, 7245 - { "rotrdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),0" }, 7246 - { "sldi", 3, PPC64, "rldicr %0,%1,%2,63-(%2)" }, 7247 - { "sldi.", 3, PPC64, "rldicr. %0,%1,%2,63-(%2)" }, 7248 - { "srdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),%2" }, 7249 - { "srdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2" }, 7250 - { "clrrdi", 3, PPC64, "rldicr %0,%1,0,63-(%2)" }, 7251 - { "clrrdi.", 3, PPC64, "rldicr. %0,%1,0,63-(%2)" }, 7252 - { "clrlsldi",4, PPC64, "rldic %0,%1,%3,(%2)-(%3)" }, 7253 - { "clrlsldi.",4, PPC64, "rldic. %0,%1,%3,(%2)-(%3)" }, 4952 + {"extldi", 4, PPC64, "rldicr %0,%1,%3,(%2)-1"}, 4953 + {"extldi.", 4, PPC64, "rldicr. %0,%1,%3,(%2)-1"}, 4954 + {"extrdi", 4, PPC64, "rldicl %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"}, 4955 + {"extrdi.", 4, PPC64, "rldicl. %0,%1,((%2)+(%3))&((%2)+(%3)<>64),64-(%2)"}, 4956 + {"insrdi", 4, PPC64, "rldimi %0,%1,64-((%2)+(%3)),%3"}, 4957 + {"insrdi.", 4, PPC64, "rldimi. %0,%1,64-((%2)+(%3)),%3"}, 4958 + {"rotrdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),0"}, 4959 + {"rotrdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),0"}, 4960 + {"sldi", 3, PPC64, "rldicr %0,%1,%2,63-(%2)"}, 4961 + {"sldi.", 3, PPC64, "rldicr. %0,%1,%2,63-(%2)"}, 4962 + {"srdi", 3, PPC64, "rldicl %0,%1,(-(%2)!63)&((%2)|63),%2"}, 4963 + {"srdi.", 3, PPC64, "rldicl. %0,%1,(-(%2)!63)&((%2)|63),%2"}, 4964 + {"clrrdi", 3, PPC64, "rldicr %0,%1,0,63-(%2)"}, 4965 + {"clrrdi.", 3, PPC64, "rldicr. %0,%1,0,63-(%2)"}, 4966 + {"clrlsldi", 4, PPC64, "rldic %0,%1,%3,(%2)-(%3)"}, 4967 + {"clrlsldi.",4, PPC64, "rldic. %0,%1,%3,(%2)-(%3)"}, 7254 4968 7255 - { "extlwi", 4, PPCCOM, "rlwinm %0,%1,%3,0,(%2)-1" }, 7256 - { "extlwi.", 4, PPCCOM, "rlwinm. %0,%1,%3,0,(%2)-1" }, 7257 - { "extrwi", 4, PPCCOM, "rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31" }, 7258 - { "extrwi.", 4, PPCCOM, "rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31" }, 7259 - { "inslwi", 4, PPCCOM, "rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1" }, 7260 - { "inslwi.", 4, PPCCOM, "rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"}, 7261 - { "insrwi", 4, PPCCOM, "rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1" }, 7262 - { "insrwi.", 4, PPCCOM, "rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"}, 7263 - { "rotrwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31" }, 7264 - { "rotrwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31" }, 7265 - { "slwi", 3, PPCCOM, "rlwinm %0,%1,%2,0,31-(%2)" }, 7266 - { "sli", 3, PWRCOM, "rlinm %0,%1,%2,0,31-(%2)" }, 7267 - { "slwi.", 3, PPCCOM, "rlwinm. %0,%1,%2,0,31-(%2)" }, 7268 - { "sli.", 3, PWRCOM, "rlinm. %0,%1,%2,0,31-(%2)" }, 7269 - { "srwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31" }, 7270 - { "sri", 3, PWRCOM, "rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31" }, 7271 - { "srwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31" }, 7272 - { "sri.", 3, PWRCOM, "rlinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31" }, 7273 - { "clrrwi", 3, PPCCOM, "rlwinm %0,%1,0,0,31-(%2)" }, 7274 - { "clrrwi.", 3, PPCCOM, "rlwinm. %0,%1,0,0,31-(%2)" }, 7275 - { "clrlslwi",4, PPCCOM, "rlwinm %0,%1,%3,(%2)-(%3),31-(%3)" }, 7276 - { "clrlslwi.",4, PPCCOM, "rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)" }, 4969 + {"extlwi", 4, PPCCOM, "rlwinm %0,%1,%3,0,(%2)-1"}, 4970 + {"extlwi.", 4, PPCCOM, "rlwinm. %0,%1,%3,0,(%2)-1"}, 4971 + {"extrwi", 4, PPCCOM, "rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"}, 4972 + {"extrwi.", 4, PPCCOM, "rlwinm. %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"}, 4973 + {"inslwi", 4, PPCCOM, "rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"}, 4974 + {"inslwi.", 4, PPCCOM, "rlwimi. %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"}, 4975 + {"insrwi", 4, PPCCOM, "rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"}, 4976 + {"insrwi.", 4, PPCCOM, "rlwimi. %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"}, 4977 + {"rotrwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"}, 4978 + {"rotrwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),0,31"}, 4979 + {"slwi", 3, PPCCOM, "rlwinm %0,%1,%2,0,31-(%2)"}, 4980 + {"sli", 3, PWRCOM, "rlinm %0,%1,%2,0,31-(%2)"}, 4981 + {"slwi.", 3, PPCCOM, "rlwinm. %0,%1,%2,0,31-(%2)"}, 4982 + {"sli.", 3, PWRCOM, "rlinm. %0,%1,%2,0,31-(%2)"}, 4983 + {"srwi", 3, PPCCOM, "rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"}, 4984 + {"sri", 3, PWRCOM, "rlinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"}, 4985 + {"srwi.", 3, PPCCOM, "rlwinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"}, 4986 + {"sri.", 3, PWRCOM, "rlinm. %0,%1,(-(%2)!31)&((%2)|31),%2,31"}, 4987 + {"clrrwi", 3, PPCCOM, "rlwinm %0,%1,0,0,31-(%2)"}, 4988 + {"clrrwi.", 3, PPCCOM, "rlwinm. %0,%1,0,0,31-(%2)"}, 4989 + {"clrlslwi", 4, PPCCOM, "rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"}, 4990 + {"clrlslwi.",4, PPCCOM, "rlwinm. %0,%1,%3,(%2)-(%3),31-(%3)"}, 4991 + 4992 + {"e_extlwi", 4, PPCVLE, "e_rlwinm %0,%1,%3,0,(%2)-1"}, 4993 + {"e_extrwi", 4, PPCVLE, "e_rlwinm %0,%1,((%2)+(%3))&((%2)+(%3)<>32),32-(%2),31"}, 4994 + {"e_inslwi", 4, PPCVLE, "e_rlwimi %0,%1,(-(%3)!31)&((%3)|31),%3,(%2)+(%3)-1"}, 4995 + {"e_insrwi", 4, PPCVLE, "e_rlwimi %0,%1,32-((%2)+(%3)),%3,(%2)+(%3)-1"}, 4996 + {"e_rotlwi", 3, PPCVLE, "e_rlwinm %0,%1,%2,0,31"}, 4997 + {"e_rotrwi", 3, PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),0,31"}, 4998 + {"e_slwi", 3, PPCVLE, "e_rlwinm %0,%1,%2,0,31-(%2)"}, 4999 + {"e_srwi", 3, PPCVLE, "e_rlwinm %0,%1,(-(%2)!31)&((%2)|31),%2,31"}, 5000 + {"e_clrlwi", 3, PPCVLE, "e_rlwinm %0,%1,0,%2,31"}, 5001 + {"e_clrrwi", 3, PPCVLE, "e_rlwinm %0,%1,0,0,31-(%2)"}, 5002 + {"e_clrlslwi",4, PPCVLE, "e_rlwinm %0,%1,%3,(%2)-(%3),31-(%3)"}, 7277 5003 }; 7278 5004 7279 - const int powerpc_num_macros = ARRAY_SIZE(powerpc_macros); 5005 + const int powerpc_num_macros = 5006 + sizeof (powerpc_macros) / sizeof (powerpc_macros[0]);
+198 -68
arch/powerpc/xmon/ppc.h
··· 1 1 /* ppc.h -- Header file for PowerPC opcode table 2 - Copyright 1994, 1995, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 3 - Free Software Foundation, Inc. 2 + Copyright (C) 1994-2016 Free Software Foundation, Inc. 4 3 Written by Ian Lance Taylor, Cygnus Support 5 4 6 5 This file is part of GDB, GAS, and the GNU binutils. ··· 21 22 #ifndef PPC_H 22 23 #define PPC_H 23 24 25 + #ifdef __cplusplus 26 + extern "C" { 27 + #endif 28 + 29 + typedef uint64_t ppc_cpu_t; 30 + 24 31 /* The opcode table is an array of struct powerpc_opcode. */ 25 32 26 33 struct powerpc_opcode ··· 47 42 /* One bit flags for the opcode. These are used to indicate which 48 43 specific processors support the instructions. The defined values 49 44 are listed below. */ 50 - unsigned long flags; 45 + ppc_cpu_t flags; 46 + 47 + /* One bit flags for the opcode. These are used to indicate which 48 + specific processors no longer support the instructions. The defined 49 + values are listed below. */ 50 + ppc_cpu_t deprecated; 51 51 52 52 /* An array of operand codes. Each code is an index into the 53 53 operand table. They appear in the order which the operands must ··· 65 55 instructions. */ 66 56 extern const struct powerpc_opcode powerpc_opcodes[]; 67 57 extern const int powerpc_num_opcodes; 58 + extern const struct powerpc_opcode vle_opcodes[]; 59 + extern const int vle_num_opcodes; 68 60 69 61 /* Values defined for the flags field of a struct powerpc_opcode. */ 70 62 ··· 79 67 /* Opcode is defined for the POWER2 (Rios 2) architecture. */ 80 68 #define PPC_OPCODE_POWER2 4 81 69 82 - /* Opcode is only defined on 32 bit architectures. */ 83 - #define PPC_OPCODE_32 8 84 - 85 - /* Opcode is only defined on 64 bit architectures. */ 86 - #define PPC_OPCODE_64 0x10 87 - 88 70 /* Opcode is supported by the Motorola PowerPC 601 processor. The 601 89 71 is assumed to support all PowerPC (PPC_OPCODE_PPC) instructions, 90 72 but it also supports many additional POWER instructions. */ 91 - #define PPC_OPCODE_601 0x20 73 + #define PPC_OPCODE_601 8 92 74 93 75 /* Opcode is supported in both the Power and PowerPC architectures 94 - (ie, compiler's -mcpu=common or assembler's -mcom). */ 95 - #define PPC_OPCODE_COMMON 0x40 76 + (ie, compiler's -mcpu=common or assembler's -mcom). More than just 77 + the intersection of PPC_OPCODE_PPC with the union of PPC_OPCODE_POWER 78 + and PPC_OPCODE_POWER2 because many instructions changed mnemonics 79 + between POWER and POWERPC. */ 80 + #define PPC_OPCODE_COMMON 0x10 96 81 97 82 /* Opcode is supported for any Power or PowerPC platform (this is 98 83 for the assembler's -many option, and it eliminates duplicates). */ 99 - #define PPC_OPCODE_ANY 0x80 84 + #define PPC_OPCODE_ANY 0x20 85 + 86 + /* Opcode is only defined on 64 bit architectures. */ 87 + #define PPC_OPCODE_64 0x40 100 88 101 89 /* Opcode is supported as part of the 64-bit bridge. */ 102 - #define PPC_OPCODE_64_BRIDGE 0x100 90 + #define PPC_OPCODE_64_BRIDGE 0x80 103 91 104 92 /* Opcode is supported by Altivec Vector Unit */ 105 - #define PPC_OPCODE_ALTIVEC 0x200 93 + #define PPC_OPCODE_ALTIVEC 0x100 106 94 107 95 /* Opcode is supported by PowerPC 403 processor. */ 108 - #define PPC_OPCODE_403 0x400 96 + #define PPC_OPCODE_403 0x200 109 97 110 98 /* Opcode is supported by PowerPC BookE processor. */ 111 - #define PPC_OPCODE_BOOKE 0x800 112 - 113 - /* Opcode is only supported by 64-bit PowerPC BookE processor. */ 114 - #define PPC_OPCODE_BOOKE64 0x1000 99 + #define PPC_OPCODE_BOOKE 0x400 115 100 116 101 /* Opcode is supported by PowerPC 440 processor. */ 117 - #define PPC_OPCODE_440 0x2000 102 + #define PPC_OPCODE_440 0x800 118 103 119 104 /* Opcode is only supported by Power4 architecture. */ 120 - #define PPC_OPCODE_POWER4 0x4000 105 + #define PPC_OPCODE_POWER4 0x1000 121 106 122 - /* Opcode isn't supported by Power4 architecture. */ 123 - #define PPC_OPCODE_NOPOWER4 0x8000 124 - 125 - /* Opcode is only supported by POWERPC Classic architecture. */ 126 - #define PPC_OPCODE_CLASSIC 0x10000 107 + /* Opcode is only supported by Power7 architecture. */ 108 + #define PPC_OPCODE_POWER7 0x2000 127 109 128 110 /* Opcode is only supported by e500x2 Core. */ 129 - #define PPC_OPCODE_SPE 0x20000 111 + #define PPC_OPCODE_SPE 0x4000 130 112 131 113 /* Opcode is supported by e500x2 Integer select APU. */ 132 - #define PPC_OPCODE_ISEL 0x40000 114 + #define PPC_OPCODE_ISEL 0x8000 133 115 134 116 /* Opcode is an e500 SPE floating point instruction. */ 135 - #define PPC_OPCODE_EFS 0x80000 117 + #define PPC_OPCODE_EFS 0x10000 136 118 137 119 /* Opcode is supported by branch locking APU. */ 138 - #define PPC_OPCODE_BRLOCK 0x100000 120 + #define PPC_OPCODE_BRLOCK 0x20000 139 121 140 122 /* Opcode is supported by performance monitor APU. */ 141 - #define PPC_OPCODE_PMR 0x200000 123 + #define PPC_OPCODE_PMR 0x40000 142 124 143 125 /* Opcode is supported by cache locking APU. */ 144 - #define PPC_OPCODE_CACHELCK 0x400000 126 + #define PPC_OPCODE_CACHELCK 0x80000 145 127 146 128 /* Opcode is supported by machine check APU. */ 147 - #define PPC_OPCODE_RFMCI 0x800000 129 + #define PPC_OPCODE_RFMCI 0x100000 148 130 149 131 /* Opcode is only supported by Power5 architecture. */ 150 - #define PPC_OPCODE_POWER5 0x1000000 132 + #define PPC_OPCODE_POWER5 0x200000 151 133 152 134 /* Opcode is supported by PowerPC e300 family. */ 153 - #define PPC_OPCODE_E300 0x2000000 135 + #define PPC_OPCODE_E300 0x400000 154 136 155 137 /* Opcode is only supported by Power6 architecture. */ 156 - #define PPC_OPCODE_POWER6 0x4000000 138 + #define PPC_OPCODE_POWER6 0x800000 157 139 158 140 /* Opcode is only supported by PowerPC Cell family. */ 159 - #define PPC_OPCODE_CELL 0x8000000 141 + #define PPC_OPCODE_CELL 0x1000000 142 + 143 + /* Opcode is supported by CPUs with paired singles support. */ 144 + #define PPC_OPCODE_PPCPS 0x2000000 145 + 146 + /* Opcode is supported by Power E500MC */ 147 + #define PPC_OPCODE_E500MC 0x4000000 148 + 149 + /* Opcode is supported by PowerPC 405 processor. */ 150 + #define PPC_OPCODE_405 0x8000000 151 + 152 + /* Opcode is supported by Vector-Scalar (VSX) Unit */ 153 + #define PPC_OPCODE_VSX 0x10000000 154 + 155 + /* Opcode is supported by A2. */ 156 + #define PPC_OPCODE_A2 0x20000000 157 + 158 + /* Opcode is supported by PowerPC 476 processor. */ 159 + #define PPC_OPCODE_476 0x40000000 160 + 161 + /* Opcode is supported by AppliedMicro Titan core */ 162 + #define PPC_OPCODE_TITAN 0x80000000 163 + 164 + /* Opcode which is supported by the e500 family */ 165 + #define PPC_OPCODE_E500 0x100000000ull 166 + 167 + /* Opcode is supported by Extended Altivec Vector Unit */ 168 + #define PPC_OPCODE_ALTIVEC2 0x200000000ull 169 + 170 + /* Opcode is supported by Power E6500 */ 171 + #define PPC_OPCODE_E6500 0x400000000ull 172 + 173 + /* Opcode is supported by Thread management APU */ 174 + #define PPC_OPCODE_TMR 0x800000000ull 175 + 176 + /* Opcode which is supported by the VLE extension. */ 177 + #define PPC_OPCODE_VLE 0x1000000000ull 178 + 179 + /* Opcode is only supported by Power8 architecture. */ 180 + #define PPC_OPCODE_POWER8 0x2000000000ull 181 + 182 + /* Opcode which is supported by the Hardware Transactional Memory extension. */ 183 + /* Currently, this is the same as the POWER8 mask. If another cpu comes out 184 + that isn't a superset of POWER8, we can define this to its own mask. */ 185 + #define PPC_OPCODE_HTM PPC_OPCODE_POWER8 186 + 187 + /* Opcode is supported by ppc750cl. */ 188 + #define PPC_OPCODE_750 0x4000000000ull 189 + 190 + /* Opcode is supported by ppc7450. */ 191 + #define PPC_OPCODE_7450 0x8000000000ull 192 + 193 + /* Opcode is supported by ppc821/850/860. */ 194 + #define PPC_OPCODE_860 0x10000000000ull 195 + 196 + /* Opcode is only supported by Power9 architecture. */ 197 + #define PPC_OPCODE_POWER9 0x20000000000ull 198 + 199 + /* Opcode is supported by Vector-Scalar (VSX) Unit from ISA 2.08. */ 200 + #define PPC_OPCODE_VSX3 0x40000000000ull 201 + 202 + /* Opcode is supported by e200z4. */ 203 + #define PPC_OPCODE_E200Z4 0x80000000000ull 160 204 161 205 /* A macro to extract the major opcode from an instruction. */ 162 206 #define PPC_OP(i) (((i) >> 26) & 0x3f) 207 + 208 + /* A macro to determine if the instruction is a 2-byte VLE insn. */ 209 + #define PPC_OP_SE_VLE(m) ((m) <= 0xffff) 210 + 211 + /* A macro to extract the major opcode from a VLE instruction. */ 212 + #define VLE_OP(i,m) (((i) >> ((m) <= 0xffff ? 10 : 26)) & 0x3f) 213 + 214 + /* A macro to convert a VLE opcode to a VLE opcode segment. */ 215 + #define VLE_OP_TO_SEG(i) ((i) >> 1) 163 216 164 217 /* The operands table is an array of struct powerpc_operand. */ 165 218 166 219 struct powerpc_operand 167 220 { 168 - /* The number of bits in the operand. */ 169 - int bits; 221 + /* A bitmask of bits in the operand. */ 222 + unsigned int bitm; 170 223 171 - /* How far the operand is left shifted in the instruction. */ 224 + /* The shift operation to be applied to the operand. No shift 225 + is made if this is zero. For positive values, the operand 226 + is shifted left by SHIFT. For negative values, the operand 227 + is shifted right by -SHIFT. Use PPC_OPSHIFT_INV to indicate 228 + that BITM and SHIFT cannot be used to determine where the 229 + operand goes in the insn. */ 172 230 int shift; 173 231 174 232 /* Insertion function. This is used by the assembler. To insert an 175 233 operand value into an instruction, check this field. 176 234 177 235 If it is NULL, execute 178 - i |= (op & ((1 << o->bits) - 1)) << o->shift; 236 + if (o->shift >= 0) 237 + i |= (op & o->bitm) << o->shift; 238 + else 239 + i |= (op & o->bitm) >> -o->shift; 179 240 (i is the instruction which we are filling in, o is a pointer to 180 - this structure, and op is the opcode value; this assumes twos 181 - complement arithmetic). 241 + this structure, and op is the operand value). 182 242 183 243 If this field is not NULL, then simply call it with the 184 244 instruction and the operand value. It will return the new value ··· 260 176 operand value is legal, *ERRMSG will be unchanged (most operands 261 177 can accept any value). */ 262 178 unsigned long (*insert) 263 - (unsigned long instruction, long op, int dialect, const char **errmsg); 179 + (unsigned long instruction, long op, ppc_cpu_t dialect, const char **errmsg); 264 180 265 181 /* Extraction function. This is used by the disassembler. To 266 182 extract this operand type from an instruction, check this field. 267 183 268 184 If it is NULL, compute 269 - op = ((i) >> o->shift) & ((1 << o->bits) - 1); 270 - if ((o->flags & PPC_OPERAND_SIGNED) != 0 271 - && (op & (1 << (o->bits - 1))) != 0) 272 - op -= 1 << o->bits; 185 + if (o->shift >= 0) 186 + op = (i >> o->shift) & o->bitm; 187 + else 188 + op = (i << -o->shift) & o->bitm; 189 + if ((o->flags & PPC_OPERAND_SIGNED) != 0) 190 + sign_extend (op); 273 191 (i is the instruction, o is a pointer to this structure, and op 274 - is the result; this assumes twos complement arithmetic). 192 + is the result). 275 193 276 194 If this field is not NULL, then simply call it with the 277 195 instruction value. It will return the value of the operand. If ··· 281 195 non-zero if this operand type can not actually be extracted from 282 196 this operand (i.e., the instruction does not match). If the 283 197 operand is valid, *INVALID will not be changed. */ 284 - long (*extract) (unsigned long instruction, int dialect, int *invalid); 198 + long (*extract) (unsigned long instruction, ppc_cpu_t dialect, int *invalid); 285 199 286 200 /* One bit syntax flags. */ 287 201 unsigned long flags; ··· 291 205 the operands field of the powerpc_opcodes table. */ 292 206 293 207 extern const struct powerpc_operand powerpc_operands[]; 208 + extern const unsigned int num_powerpc_operands; 209 + 210 + /* Use with the shift field of a struct powerpc_operand to indicate 211 + that BITM and SHIFT cannot be used to determine where the operand 212 + goes in the insn. */ 213 + #define PPC_OPSHIFT_INV (-1U << 31) 294 214 295 215 /* Values defined for the flags field of a struct powerpc_operand. */ 296 216 297 217 /* This operand takes signed values. */ 298 - #define PPC_OPERAND_SIGNED (01) 218 + #define PPC_OPERAND_SIGNED (0x1) 299 219 300 220 /* This operand takes signed values, but also accepts a full positive 301 221 range of values when running in 32 bit mode. That is, if bits is 302 222 16, it takes any value from -0x8000 to 0xffff. In 64 bit mode, 303 223 this flag is ignored. */ 304 - #define PPC_OPERAND_SIGNOPT (02) 224 + #define PPC_OPERAND_SIGNOPT (0x2) 305 225 306 226 /* This operand does not actually exist in the assembler input. This 307 227 is used to support extended mnemonics such as mr, for which two ··· 315 223 insert function with any op value. The disassembler should call 316 224 the extract function, ignore the return value, and check the value 317 225 placed in the valid argument. */ 318 - #define PPC_OPERAND_FAKE (04) 226 + #define PPC_OPERAND_FAKE (0x4) 319 227 320 228 /* The next operand should be wrapped in parentheses rather than 321 229 separated from this one by a comma. This is used for the load and 322 230 store instructions which want their operands to look like 323 231 reg,displacement(reg) 324 232 */ 325 - #define PPC_OPERAND_PARENS (010) 233 + #define PPC_OPERAND_PARENS (0x8) 326 234 327 235 /* This operand may use the symbolic names for the CR fields, which 328 236 are ··· 331 239 cr4 4 cr5 5 cr6 6 cr7 7 332 240 These may be combined arithmetically, as in cr2*4+gt. These are 333 241 only supported on the PowerPC, not the POWER. */ 334 - #define PPC_OPERAND_CR (020) 242 + #define PPC_OPERAND_CR_BIT (0x10) 335 243 336 244 /* This operand names a register. The disassembler uses this to print 337 245 register names with a leading 'r'. */ 338 - #define PPC_OPERAND_GPR (040) 246 + #define PPC_OPERAND_GPR (0x20) 339 247 340 248 /* Like PPC_OPERAND_GPR, but don't print a leading 'r' for r0. */ 341 - #define PPC_OPERAND_GPR_0 (0100) 249 + #define PPC_OPERAND_GPR_0 (0x40) 342 250 343 251 /* This operand names a floating point register. The disassembler 344 252 prints these with a leading 'f'. */ 345 - #define PPC_OPERAND_FPR (0200) 253 + #define PPC_OPERAND_FPR (0x80) 346 254 347 255 /* This operand is a relative branch displacement. The disassembler 348 256 prints these symbolically if possible. */ 349 - #define PPC_OPERAND_RELATIVE (0400) 257 + #define PPC_OPERAND_RELATIVE (0x100) 350 258 351 259 /* This operand is an absolute branch address. The disassembler 352 260 prints these symbolically if possible. */ 353 - #define PPC_OPERAND_ABSOLUTE (01000) 261 + #define PPC_OPERAND_ABSOLUTE (0x200) 354 262 355 263 /* This operand is optional, and is zero if omitted. This is used for 356 264 example, in the optional BF field in the comparison instructions. The ··· 358 266 and the number of operands remaining for the opcode, and decide 359 267 whether this operand is present or not. The disassembler should 360 268 print this operand out only if it is not zero. */ 361 - #define PPC_OPERAND_OPTIONAL (02000) 269 + #define PPC_OPERAND_OPTIONAL (0x400) 362 270 363 271 /* This flag is only used with PPC_OPERAND_OPTIONAL. If this operand 364 272 is omitted, then for the next operand use this operand value plus ··· 366 274 hack is needed because the Power rotate instructions can take 367 275 either 4 or 5 operands. The disassembler should print this operand 368 276 out regardless of the PPC_OPERAND_OPTIONAL field. */ 369 - #define PPC_OPERAND_NEXT (04000) 277 + #define PPC_OPERAND_NEXT (0x800) 370 278 371 279 /* This operand should be regarded as a negative number for the 372 280 purposes of overflow checking (i.e., the normal most negative 373 281 number is disallowed and one more than the normal most positive 374 282 number is allowed). This flag will only be set for a signed 375 283 operand. */ 376 - #define PPC_OPERAND_NEGATIVE (010000) 284 + #define PPC_OPERAND_NEGATIVE (0x1000) 377 285 378 286 /* This operand names a vector unit register. The disassembler 379 287 prints these with a leading 'v'. */ 380 - #define PPC_OPERAND_VR (020000) 288 + #define PPC_OPERAND_VR (0x2000) 381 289 382 290 /* This operand is for the DS field in a DS form instruction. */ 383 - #define PPC_OPERAND_DS (040000) 291 + #define PPC_OPERAND_DS (0x4000) 384 292 385 293 /* This operand is for the DQ field in a DQ form instruction. */ 386 - #define PPC_OPERAND_DQ (0100000) 294 + #define PPC_OPERAND_DQ (0x8000) 295 + 296 + /* Valid range of operand is 0..n rather than 0..n-1. */ 297 + #define PPC_OPERAND_PLUS1 (0x10000) 298 + 299 + /* Xilinx APU and FSL related operands */ 300 + #define PPC_OPERAND_FSL (0x20000) 301 + #define PPC_OPERAND_FCR (0x40000) 302 + #define PPC_OPERAND_UDI (0x80000) 303 + 304 + /* This operand names a vector-scalar unit register. The disassembler 305 + prints these with a leading 'vs'. */ 306 + #define PPC_OPERAND_VSR (0x100000) 307 + 308 + /* This is a CR FIELD that does not use symbolic names. */ 309 + #define PPC_OPERAND_CR_REG (0x200000) 310 + 311 + /* This flag is only used with PPC_OPERAND_OPTIONAL. If this operand 312 + is omitted, then the value it should use for the operand is stored 313 + in the SHIFT field of the immediatly following operand field. */ 314 + #define PPC_OPERAND_OPTIONAL_VALUE (0x400000) 315 + 316 + /* This flag is only used with PPC_OPERAND_OPTIONAL. The operand is 317 + only optional when generating 32-bit code. */ 318 + #define PPC_OPERAND_OPTIONAL32 (0x800000) 387 319 388 320 /* The POWER and PowerPC assemblers use a few macros. We keep them 389 321 with the operands table for simplicity. The macro table is an ··· 424 308 /* One bit flags for the opcode. These are used to indicate which 425 309 specific processors support the instructions. The values are the 426 310 same as those for the struct powerpc_opcode flags field. */ 427 - unsigned long flags; 311 + ppc_cpu_t flags; 428 312 429 313 /* A format string to turn the macro into a normal instruction. 430 314 Each %N in the string is replaced with operand number N (zero ··· 434 318 435 319 extern const struct powerpc_macro powerpc_macros[]; 436 320 extern const int powerpc_num_macros; 321 + 322 + extern ppc_cpu_t ppc_parse_cpu (ppc_cpu_t, ppc_cpu_t *, const char *); 323 + 324 + static inline long 325 + ppc_optional_operand_value (const struct powerpc_operand *operand) 326 + { 327 + if ((operand->flags & PPC_OPERAND_OPTIONAL_VALUE) != 0) 328 + return (operand+1)->shift; 329 + return 0; 330 + } 331 + 332 + #ifdef __cplusplus 333 + } 334 + #endif 437 335 438 336 #endif /* PPC_H */
+55 -3
arch/powerpc/xmon/xmon.c
··· 212 212 "\ 213 213 C checksum\n\ 214 214 d dump bytes\n\ 215 + d1 dump 1 byte values\n\ 216 + d2 dump 2 byte values\n\ 217 + d4 dump 4 byte values\n\ 218 + d8 dump 8 byte values\n\ 215 219 di dump instructions\n\ 216 220 df dump float values\n\ 217 221 dd dump double values\n\ ··· 2338 2334 } 2339 2335 #endif 2340 2336 2337 + static void dump_by_size(unsigned long addr, long count, int size) 2338 + { 2339 + unsigned char temp[16]; 2340 + int i, j; 2341 + u64 val; 2342 + 2343 + count = ALIGN(count, 16); 2344 + 2345 + for (i = 0; i < count; i += 16, addr += 16) { 2346 + printf(REG, addr); 2347 + 2348 + if (mread(addr, temp, 16) != 16) { 2349 + printf("\nFaulted reading %d bytes from 0x"REG"\n", 16, addr); 2350 + return; 2351 + } 2352 + 2353 + for (j = 0; j < 16; j += size) { 2354 + putchar(' '); 2355 + switch (size) { 2356 + case 1: val = temp[j]; break; 2357 + case 2: val = *(u16 *)&temp[j]; break; 2358 + case 4: val = *(u32 *)&temp[j]; break; 2359 + case 8: val = *(u64 *)&temp[j]; break; 2360 + default: val = 0; 2361 + } 2362 + 2363 + printf("%0*lx", size * 2, val); 2364 + } 2365 + printf("\n"); 2366 + } 2367 + } 2368 + 2341 2369 static void 2342 2370 dump(void) 2343 2371 { 2372 + static char last[] = { "d?\n" }; 2344 2373 int c; 2345 2374 2346 2375 c = inchar(); ··· 2387 2350 } 2388 2351 #endif 2389 2352 2390 - if ((isxdigit(c) && c != 'f' && c != 'd') || c == '\n') 2353 + if (c == '\n') 2391 2354 termch = c; 2355 + 2392 2356 scanhex((void *)&adrs); 2393 2357 if (termch != '\n') 2394 2358 termch = 0; ··· 2421 2383 ndump = 64; 2422 2384 else if (ndump > MAX_DUMP) 2423 2385 ndump = MAX_DUMP; 2424 - prdump(adrs, ndump); 2386 + 2387 + switch (c) { 2388 + case '8': 2389 + case '4': 2390 + case '2': 2391 + case '1': 2392 + ndump = ALIGN(ndump, 16); 2393 + dump_by_size(adrs, ndump, c - '0'); 2394 + last[1] = c; 2395 + last_cmd = last; 2396 + break; 2397 + default: 2398 + prdump(adrs, ndump); 2399 + last_cmd = "d\n"; 2400 + } 2401 + 2425 2402 adrs += ndump; 2426 - last_cmd = "d\n"; 2427 2403 } 2428 2404 } 2429 2405
+3 -2
drivers/misc/cxl/cxl.h
··· 418 418 struct dentry *debugfs; 419 419 struct mutex contexts_lock; 420 420 spinlock_t afu_cntl_lock; 421 - /* Used to block access to AFU config space while deconfigured */ 422 - struct rw_semaphore configured_rwsem; 421 + 422 + /* -1: AFU deconfigured/locked, >= 0: number of readers */ 423 + atomic_t configured_state; 423 424 424 425 /* AFU error buffer fields and bin attribute for sysfs */ 425 426 u64 eb_len, eb_offset;
+1 -2
drivers/misc/cxl/main.c
··· 268 268 idr_init(&afu->contexts_idr); 269 269 mutex_init(&afu->contexts_lock); 270 270 spin_lock_init(&afu->afu_cntl_lock); 271 - init_rwsem(&afu->configured_rwsem); 272 - down_write(&afu->configured_rwsem); 271 + atomic_set(&afu->configured_state, -1); 273 272 afu->prefault_mode = CXL_PREFAULT_NONE; 274 273 afu->irqs_max = afu->adapter->user_irqs; 275 274
+9 -2
drivers/misc/cxl/pci.c
··· 1129 1129 if ((rc = cxl_native_register_psl_irq(afu))) 1130 1130 goto err2; 1131 1131 1132 - up_write(&afu->configured_rwsem); 1132 + atomic_set(&afu->configured_state, 0); 1133 1133 return 0; 1134 1134 1135 1135 err2: ··· 1142 1142 1143 1143 static void pci_deconfigure_afu(struct cxl_afu *afu) 1144 1144 { 1145 - down_write(&afu->configured_rwsem); 1145 + /* 1146 + * It's okay to deconfigure when AFU is already locked, otherwise wait 1147 + * until there are no readers 1148 + */ 1149 + if (atomic_read(&afu->configured_state) != -1) { 1150 + while (atomic_cmpxchg(&afu->configured_state, 0, -1) != -1) 1151 + schedule(); 1152 + } 1146 1153 cxl_native_release_psl_irq(afu); 1147 1154 if (afu->adapter->native->sl_ops->release_serr_irq) 1148 1155 afu->adapter->native->sl_ops->release_serr_irq(afu);
+14 -4
drivers/misc/cxl/vphb.c
··· 83 83 return phb ? phb->private_data : NULL; 84 84 } 85 85 86 + static void cxl_afu_configured_put(struct cxl_afu *afu) 87 + { 88 + atomic_dec_if_positive(&afu->configured_state); 89 + } 90 + 91 + static bool cxl_afu_configured_get(struct cxl_afu *afu) 92 + { 93 + return atomic_inc_unless_negative(&afu->configured_state); 94 + } 95 + 86 96 static inline int cxl_pcie_config_info(struct pci_bus *bus, unsigned int devfn, 87 97 struct cxl_afu *afu, int *_record) 88 98 { ··· 117 107 118 108 afu = pci_bus_to_afu(bus); 119 109 /* Grab a reader lock on afu. */ 120 - if (afu == NULL || !down_read_trylock(&afu->configured_rwsem)) 110 + if (afu == NULL || !cxl_afu_configured_get(afu)) 121 111 return PCIBIOS_DEVICE_NOT_FOUND; 122 112 123 113 rc = cxl_pcie_config_info(bus, devfn, afu, &record); ··· 142 132 } 143 133 144 134 out: 145 - up_read(&afu->configured_rwsem); 135 + cxl_afu_configured_put(afu); 146 136 return rc ? PCIBIOS_DEVICE_NOT_FOUND : PCIBIOS_SUCCESSFUL; 147 137 } 148 138 ··· 154 144 155 145 afu = pci_bus_to_afu(bus); 156 146 /* Grab a reader lock on afu. */ 157 - if (afu == NULL || !down_read_trylock(&afu->configured_rwsem)) 147 + if (afu == NULL || !cxl_afu_configured_get(afu)) 158 148 return PCIBIOS_DEVICE_NOT_FOUND; 159 149 160 150 rc = cxl_pcie_config_info(bus, devfn, afu, &record); ··· 176 166 } 177 167 178 168 out: 179 - up_read(&afu->configured_rwsem); 169 + cxl_afu_configured_put(afu); 180 170 return rc ? PCIBIOS_SET_FAILED : PCIBIOS_SUCCESSFUL; 181 171 } 182 172
+64 -17
drivers/pci/hotplug/pnv_php.c
··· 35 35 static void pnv_php_unregister_one(struct device_node *dn); 36 36 static void pnv_php_unregister(struct device_node *dn); 37 37 38 - static void pnv_php_disable_irq(struct pnv_php_slot *php_slot) 38 + static void pnv_php_disable_irq(struct pnv_php_slot *php_slot, 39 + bool disable_device) 39 40 { 40 41 struct pci_dev *pdev = php_slot->pdev; 42 + int irq = php_slot->irq; 41 43 u16 ctrl; 42 44 43 45 if (php_slot->irq > 0) { ··· 58 56 php_slot->wq = NULL; 59 57 } 60 58 61 - if (pdev->msix_enabled) 62 - pci_disable_msix(pdev); 63 - else if (pdev->msi_enabled) 64 - pci_disable_msi(pdev); 59 + if (disable_device || irq > 0) { 60 + if (pdev->msix_enabled) 61 + pci_disable_msix(pdev); 62 + else if (pdev->msi_enabled) 63 + pci_disable_msi(pdev); 64 + 65 + pci_disable_device(pdev); 66 + } 65 67 } 66 68 67 69 static void pnv_php_free_slot(struct kref *kref) ··· 74 68 struct pnv_php_slot, kref); 75 69 76 70 WARN_ON(!list_empty(&php_slot->children)); 77 - pnv_php_disable_irq(php_slot); 71 + pnv_php_disable_irq(php_slot, false); 78 72 kfree(php_slot->name); 79 73 kfree(php_slot); 80 74 } ··· 82 76 static inline void pnv_php_put_slot(struct pnv_php_slot *php_slot) 83 77 { 84 78 85 - if (WARN_ON(!php_slot)) 79 + if (!php_slot) 86 80 return; 87 81 88 82 kref_put(&php_slot->kref, pnv_php_free_slot); ··· 436 430 if (ret) 437 431 return ret; 438 432 439 - /* Proceed if there have nothing behind the slot */ 440 - if (presence == OPAL_PCI_SLOT_EMPTY) 433 + /* 434 + * Proceed if there have nothing behind the slot. However, 435 + * we should leave the slot in registered state at the 436 + * beginning. Otherwise, the PCI devices inserted afterwards 437 + * won't be probed and populated. 438 + */ 439 + if (presence == OPAL_PCI_SLOT_EMPTY) { 440 + if (!php_slot->power_state_check) { 441 + php_slot->power_state_check = true; 442 + 443 + return 0; 444 + } 445 + 441 446 goto scan; 447 + } 442 448 443 449 /* 444 450 * If the power supply to the slot is off, we can't detect ··· 723 705 if (sts & PCI_EXP_SLTSTA_DLLSC) { 724 706 pcie_capability_read_word(pdev, PCI_EXP_LNKSTA, &lsts); 725 707 added = !!(lsts & PCI_EXP_LNKSTA_DLLLA); 726 - } else if (sts & PCI_EXP_SLTSTA_PDC) { 708 + } else if (!(php_slot->flags & PNV_PHP_FLAG_BROKEN_PDC) && 709 + (sts & PCI_EXP_SLTSTA_PDC)) { 727 710 ret = pnv_pci_get_presence_state(php_slot->id, &presence); 728 - if (!ret) 711 + if (ret) { 712 + dev_warn(&pdev->dev, "PCI slot [%s] error %d getting presence (0x%04x), to retry the operation.\n", 713 + php_slot->name, ret, sts); 729 714 return IRQ_HANDLED; 715 + } 716 + 730 717 added = !!(presence == OPAL_PCI_SLOT_PRESENT); 731 718 } else { 732 719 return IRQ_NONE; ··· 775 752 static void pnv_php_init_irq(struct pnv_php_slot *php_slot, int irq) 776 753 { 777 754 struct pci_dev *pdev = php_slot->pdev; 755 + u32 broken_pdc = 0; 778 756 u16 sts, ctrl; 779 757 int ret; 780 758 ··· 783 759 php_slot->wq = alloc_workqueue("pciehp-%s", 0, 0, php_slot->name); 784 760 if (!php_slot->wq) { 785 761 dev_warn(&pdev->dev, "Cannot alloc workqueue\n"); 786 - pnv_php_disable_irq(php_slot); 762 + pnv_php_disable_irq(php_slot, true); 787 763 return; 788 764 } 789 765 766 + /* Check PDC (Presence Detection Change) is broken or not */ 767 + ret = of_property_read_u32(php_slot->dn, "ibm,slot-broken-pdc", 768 + &broken_pdc); 769 + if (!ret && broken_pdc) 770 + php_slot->flags |= PNV_PHP_FLAG_BROKEN_PDC; 771 + 790 772 /* Clear pending interrupts */ 791 773 pcie_capability_read_word(pdev, PCI_EXP_SLTSTA, &sts); 792 - sts |= (PCI_EXP_SLTSTA_PDC | PCI_EXP_SLTSTA_DLLSC); 774 + if (php_slot->flags & PNV_PHP_FLAG_BROKEN_PDC) 775 + sts |= PCI_EXP_SLTSTA_DLLSC; 776 + else 777 + sts |= (PCI_EXP_SLTSTA_PDC | PCI_EXP_SLTSTA_DLLSC); 793 778 pcie_capability_write_word(pdev, PCI_EXP_SLTSTA, sts); 794 779 795 780 /* Request the interrupt */ 796 781 ret = request_irq(irq, pnv_php_interrupt, IRQF_SHARED, 797 782 php_slot->name, php_slot); 798 783 if (ret) { 799 - pnv_php_disable_irq(php_slot); 784 + pnv_php_disable_irq(php_slot, true); 800 785 dev_warn(&pdev->dev, "Error %d enabling IRQ %d\n", ret, irq); 801 786 return; 802 787 } 803 788 804 789 /* Enable the interrupts */ 805 790 pcie_capability_read_word(pdev, PCI_EXP_SLTCTL, &ctrl); 806 - ctrl |= (PCI_EXP_SLTCTL_HPIE | 807 - PCI_EXP_SLTCTL_PDCE | 808 - PCI_EXP_SLTCTL_DLLSCE); 791 + if (php_slot->flags & PNV_PHP_FLAG_BROKEN_PDC) { 792 + ctrl &= ~PCI_EXP_SLTCTL_PDCE; 793 + ctrl |= (PCI_EXP_SLTCTL_HPIE | 794 + PCI_EXP_SLTCTL_DLLSCE); 795 + } else { 796 + ctrl |= (PCI_EXP_SLTCTL_HPIE | 797 + PCI_EXP_SLTCTL_PDCE | 798 + PCI_EXP_SLTCTL_DLLSCE); 799 + } 809 800 pcie_capability_write_word(pdev, PCI_EXP_SLTCTL, ctrl); 810 801 811 802 /* The interrupt is initialized successfully when @irq is valid */ ··· 831 792 { 832 793 struct pci_dev *pdev = php_slot->pdev; 833 794 int irq, ret; 795 + 796 + /* 797 + * The MSI/MSIx interrupt might have been occupied by other 798 + * drivers. Don't populate the surprise hotplug capability 799 + * in that case. 800 + */ 801 + if (pci_dev_msi_enabled(pdev)) 802 + return; 834 803 835 804 ret = pci_enable_device(pdev); 836 805 if (ret) {