1349cc55cSDimitry Andric//===--- P10InstrResources.td - P10 Scheduling Definitions -*- tablegen -*-===// 2349cc55cSDimitry Andric// 3349cc55cSDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4349cc55cSDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 5349cc55cSDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6349cc55cSDimitry Andric// 7349cc55cSDimitry Andric//===----------------------------------------------------------------------===// 8349cc55cSDimitry Andric// Automatically generated file, do not edit! 9349cc55cSDimitry Andric// 1006c3fb27SDimitry Andric// This file defines instruction data for SchedModel of the POWER10 processor. 11349cc55cSDimitry Andric// 12349cc55cSDimitry Andric//===----------------------------------------------------------------------===// 13349cc55cSDimitry Andric// 22 Cycles Binary Floating Point operations, 2 input operands 14349cc55cSDimitry Andricdef : InstRW<[P10W_BF_22C, P10W_DISP_ANY, P10BF_Read, P10BF_Read], 15349cc55cSDimitry Andric (instrs 16349cc55cSDimitry Andric FDIVS, 17349cc55cSDimitry Andric XSDIVSP 18349cc55cSDimitry Andric)>; 19349cc55cSDimitry Andric 20349cc55cSDimitry Andric// 2-way crack instructions 21349cc55cSDimitry Andric// 22 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 2 input operands 22349cc55cSDimitry Andricdef : InstRW<[P10W_BF_22C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 23349cc55cSDimitry Andric (instrs 24349cc55cSDimitry Andric FDIVS_rec 25349cc55cSDimitry Andric)>; 26349cc55cSDimitry Andric 27349cc55cSDimitry Andric// 24 Cycles Binary Floating Point operations, 2 input operands 28349cc55cSDimitry Andricdef : InstRW<[P10W_BF_24C, P10W_DISP_ANY, P10BF_Read, P10BF_Read], 29349cc55cSDimitry Andric (instrs 30349cc55cSDimitry Andric XVDIVSP 31349cc55cSDimitry Andric)>; 32349cc55cSDimitry Andric 33349cc55cSDimitry Andric// 26 Cycles Binary Floating Point operations, 1 input operands 34349cc55cSDimitry Andricdef : InstRW<[P10W_BF_26C, P10W_DISP_ANY, P10BF_Read], 35349cc55cSDimitry Andric (instrs 36349cc55cSDimitry Andric FSQRTS, 37349cc55cSDimitry Andric XSSQRTSP 38349cc55cSDimitry Andric)>; 39349cc55cSDimitry Andric 40349cc55cSDimitry Andric// 2-way crack instructions 41349cc55cSDimitry Andric// 26 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 1 input operands 42349cc55cSDimitry Andricdef : InstRW<[P10W_BF_26C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 43349cc55cSDimitry Andric (instrs 44349cc55cSDimitry Andric FSQRTS_rec 45349cc55cSDimitry Andric)>; 46349cc55cSDimitry Andric 47349cc55cSDimitry Andric// 27 Cycles Binary Floating Point operations, 1 input operands 48349cc55cSDimitry Andricdef : InstRW<[P10W_BF_27C, P10W_DISP_ANY, P10BF_Read], 49349cc55cSDimitry Andric (instrs 50349cc55cSDimitry Andric XVSQRTSP 51349cc55cSDimitry Andric)>; 52349cc55cSDimitry Andric 53349cc55cSDimitry Andric// 27 Cycles Binary Floating Point operations, 2 input operands 54349cc55cSDimitry Andricdef : InstRW<[P10W_BF_27C, P10W_DISP_ANY, P10BF_Read, P10BF_Read], 55349cc55cSDimitry Andric (instrs 56349cc55cSDimitry Andric FDIV, 57349cc55cSDimitry Andric XSDIVDP, 58349cc55cSDimitry Andric XVDIVDP 59349cc55cSDimitry Andric)>; 60349cc55cSDimitry Andric 61349cc55cSDimitry Andric// 2-way crack instructions 62349cc55cSDimitry Andric// 27 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 2 input operands 63349cc55cSDimitry Andricdef : InstRW<[P10W_BF_27C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 64349cc55cSDimitry Andric (instrs 65349cc55cSDimitry Andric FDIV_rec 66349cc55cSDimitry Andric)>; 67349cc55cSDimitry Andric 68349cc55cSDimitry Andric// 36 Cycles Binary Floating Point operations, 1 input operands 69349cc55cSDimitry Andricdef : InstRW<[P10W_BF_36C, P10W_DISP_ANY, P10BF_Read], 70349cc55cSDimitry Andric (instrs 71349cc55cSDimitry Andric FSQRT, 72349cc55cSDimitry Andric XSSQRTDP, 73349cc55cSDimitry Andric XVSQRTDP 74349cc55cSDimitry Andric)>; 75349cc55cSDimitry Andric 76349cc55cSDimitry Andric// 2-way crack instructions 77349cc55cSDimitry Andric// 36 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 1 input operands 78349cc55cSDimitry Andricdef : InstRW<[P10W_BF_36C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 79349cc55cSDimitry Andric (instrs 80349cc55cSDimitry Andric FSQRT_rec 81349cc55cSDimitry Andric)>; 82349cc55cSDimitry Andric 83349cc55cSDimitry Andric// 7 Cycles Binary Floating Point operations, 1 input operands 84349cc55cSDimitry Andricdef : InstRW<[P10W_BF_7C, P10W_DISP_ANY, P10BF_Read], 85349cc55cSDimitry Andric (instrs 86349cc55cSDimitry Andric FCFID, 87349cc55cSDimitry Andric FCFIDS, 88349cc55cSDimitry Andric FCFIDU, 89349cc55cSDimitry Andric FCFIDUS, 90349cc55cSDimitry Andric FCTID, 91349cc55cSDimitry Andric FCTIDU, 92349cc55cSDimitry Andric FCTIDUZ, 93349cc55cSDimitry Andric FCTIDZ, 94349cc55cSDimitry Andric FCTIW, 95349cc55cSDimitry Andric FCTIWU, 96349cc55cSDimitry Andric FCTIWUZ, 97349cc55cSDimitry Andric FCTIWZ, 98349cc55cSDimitry Andric FRE, 99349cc55cSDimitry Andric FRES, 100349cc55cSDimitry Andric FRIMD, FRIMS, 101349cc55cSDimitry Andric FRIND, FRINS, 102349cc55cSDimitry Andric FRIPD, FRIPS, 103349cc55cSDimitry Andric FRIZD, FRIZS, 104349cc55cSDimitry Andric FRSP, 105349cc55cSDimitry Andric FRSQRTE, 106349cc55cSDimitry Andric FRSQRTES, 107349cc55cSDimitry Andric VCFSX, VCFSX_0, 108349cc55cSDimitry Andric VCFUX, VCFUX_0, 109349cc55cSDimitry Andric VCTSXS, VCTSXS_0, 110349cc55cSDimitry Andric VCTUXS, VCTUXS_0, 111349cc55cSDimitry Andric VLOGEFP, 112349cc55cSDimitry Andric VREFP, 113349cc55cSDimitry Andric VRFIM, 114349cc55cSDimitry Andric VRFIN, 115349cc55cSDimitry Andric VRFIP, 116349cc55cSDimitry Andric VRFIZ, 117349cc55cSDimitry Andric VRSQRTEFP, 118349cc55cSDimitry Andric XSCVDPHP, 119349cc55cSDimitry Andric XSCVDPSP, 120349cc55cSDimitry Andric XSCVDPSPN, 121349cc55cSDimitry Andric XSCVDPSXDS, XSCVDPSXDSs, 122349cc55cSDimitry Andric XSCVDPSXWS, XSCVDPSXWSs, 123349cc55cSDimitry Andric XSCVDPUXDS, XSCVDPUXDSs, 124349cc55cSDimitry Andric XSCVDPUXWS, XSCVDPUXWSs, 125349cc55cSDimitry Andric XSCVSPDP, 126349cc55cSDimitry Andric XSCVSXDDP, 127349cc55cSDimitry Andric XSCVSXDSP, 128349cc55cSDimitry Andric XSCVUXDDP, 129349cc55cSDimitry Andric XSCVUXDSP, 130349cc55cSDimitry Andric XSRDPI, 131349cc55cSDimitry Andric XSRDPIC, 132349cc55cSDimitry Andric XSRDPIM, 133349cc55cSDimitry Andric XSRDPIP, 134349cc55cSDimitry Andric XSRDPIZ, 135349cc55cSDimitry Andric XSREDP, 136349cc55cSDimitry Andric XSRESP, 137349cc55cSDimitry Andric XSRSP, 138349cc55cSDimitry Andric XSRSQRTEDP, 139349cc55cSDimitry Andric XSRSQRTESP, 140349cc55cSDimitry Andric XVCVDPSP, 141349cc55cSDimitry Andric XVCVDPSXDS, 142349cc55cSDimitry Andric XVCVDPSXWS, 143349cc55cSDimitry Andric XVCVDPUXDS, 144349cc55cSDimitry Andric XVCVDPUXWS, 145349cc55cSDimitry Andric XVCVSPBF16, 146349cc55cSDimitry Andric XVCVSPDP, 147349cc55cSDimitry Andric XVCVSPHP, 148349cc55cSDimitry Andric XVCVSPSXDS, 149349cc55cSDimitry Andric XVCVSPSXWS, 150349cc55cSDimitry Andric XVCVSPUXDS, 151349cc55cSDimitry Andric XVCVSPUXWS, 152349cc55cSDimitry Andric XVCVSXDDP, 153349cc55cSDimitry Andric XVCVSXDSP, 154349cc55cSDimitry Andric XVCVSXWDP, 155349cc55cSDimitry Andric XVCVSXWSP, 156349cc55cSDimitry Andric XVCVUXDDP, 157349cc55cSDimitry Andric XVCVUXDSP, 158349cc55cSDimitry Andric XVCVUXWDP, 159349cc55cSDimitry Andric XVCVUXWSP, 160349cc55cSDimitry Andric XVRDPI, 161349cc55cSDimitry Andric XVRDPIC, 162349cc55cSDimitry Andric XVRDPIM, 163349cc55cSDimitry Andric XVRDPIP, 164349cc55cSDimitry Andric XVRDPIZ, 165349cc55cSDimitry Andric XVREDP, 166349cc55cSDimitry Andric XVRESP, 167349cc55cSDimitry Andric XVRSPI, 168349cc55cSDimitry Andric XVRSPIC, 169349cc55cSDimitry Andric XVRSPIM, 170349cc55cSDimitry Andric XVRSPIP, 171349cc55cSDimitry Andric XVRSPIZ, 172349cc55cSDimitry Andric XVRSQRTEDP, 173349cc55cSDimitry Andric XVRSQRTESP 174349cc55cSDimitry Andric)>; 175349cc55cSDimitry Andric 176349cc55cSDimitry Andric// 7 Cycles Binary Floating Point operations, 2 input operands 177349cc55cSDimitry Andricdef : InstRW<[P10W_BF_7C, P10W_DISP_ANY, P10BF_Read, P10BF_Read], 178349cc55cSDimitry Andric (instrs 179349cc55cSDimitry Andric FADD, 180349cc55cSDimitry Andric FADDS, 181349cc55cSDimitry Andric FMUL, 182349cc55cSDimitry Andric FMULS, 183349cc55cSDimitry Andric FSUB, 184349cc55cSDimitry Andric FSUBS, 185349cc55cSDimitry Andric VADDFP, 186349cc55cSDimitry Andric VSUBFP, 187349cc55cSDimitry Andric XSADDDP, 188349cc55cSDimitry Andric XSADDSP, 189349cc55cSDimitry Andric XSMULDP, 190349cc55cSDimitry Andric XSMULSP, 191349cc55cSDimitry Andric XSSUBDP, 192349cc55cSDimitry Andric XSSUBSP, 193349cc55cSDimitry Andric XVADDDP, 194349cc55cSDimitry Andric XVADDSP, 195349cc55cSDimitry Andric XVMULDP, 196349cc55cSDimitry Andric XVMULSP, 197349cc55cSDimitry Andric XVSUBDP, 198349cc55cSDimitry Andric XVSUBSP 199349cc55cSDimitry Andric)>; 200349cc55cSDimitry Andric 201349cc55cSDimitry Andric// 7 Cycles Binary Floating Point operations, 3 input operands 202349cc55cSDimitry Andricdef : InstRW<[P10W_BF_7C, P10W_DISP_ANY, P10BF_Read, P10BF_Read, P10BF_Read], 203349cc55cSDimitry Andric (instrs 204349cc55cSDimitry Andric FMADD, 205349cc55cSDimitry Andric FMADDS, 206349cc55cSDimitry Andric FMSUB, 207349cc55cSDimitry Andric FMSUBS, 208349cc55cSDimitry Andric FNMADD, 209349cc55cSDimitry Andric FNMADDS, 210349cc55cSDimitry Andric FNMSUB, 211349cc55cSDimitry Andric FNMSUBS, 212349cc55cSDimitry Andric FSELD, FSELS, 213349cc55cSDimitry Andric VMADDFP, 214349cc55cSDimitry Andric VNMSUBFP, 215349cc55cSDimitry Andric XSMADDADP, 216349cc55cSDimitry Andric XSMADDASP, 217349cc55cSDimitry Andric XSMADDMDP, 218349cc55cSDimitry Andric XSMADDMSP, 219349cc55cSDimitry Andric XSMSUBADP, 220349cc55cSDimitry Andric XSMSUBASP, 221349cc55cSDimitry Andric XSMSUBMDP, 222349cc55cSDimitry Andric XSMSUBMSP, 223349cc55cSDimitry Andric XSNMADDADP, 224349cc55cSDimitry Andric XSNMADDASP, 225349cc55cSDimitry Andric XSNMADDMDP, 226349cc55cSDimitry Andric XSNMADDMSP, 227349cc55cSDimitry Andric XSNMSUBADP, 228349cc55cSDimitry Andric XSNMSUBASP, 229349cc55cSDimitry Andric XSNMSUBMDP, 230349cc55cSDimitry Andric XSNMSUBMSP, 231349cc55cSDimitry Andric XVMADDADP, 232349cc55cSDimitry Andric XVMADDASP, 233349cc55cSDimitry Andric XVMADDMDP, 234349cc55cSDimitry Andric XVMADDMSP, 235349cc55cSDimitry Andric XVMSUBADP, 236349cc55cSDimitry Andric XVMSUBASP, 237349cc55cSDimitry Andric XVMSUBMDP, 238349cc55cSDimitry Andric XVMSUBMSP, 239349cc55cSDimitry Andric XVNMADDADP, 240349cc55cSDimitry Andric XVNMADDASP, 241349cc55cSDimitry Andric XVNMADDMDP, 242349cc55cSDimitry Andric XVNMADDMSP, 243349cc55cSDimitry Andric XVNMSUBADP, 244349cc55cSDimitry Andric XVNMSUBASP, 245349cc55cSDimitry Andric XVNMSUBMDP, 246349cc55cSDimitry Andric XVNMSUBMSP 247349cc55cSDimitry Andric)>; 248349cc55cSDimitry Andric 249349cc55cSDimitry Andric// 2-way crack instructions 250349cc55cSDimitry Andric// 7 Cycles Binary Floating Point operations, and 7 Cycles Binary Floating Point operations, 1 input operands 251349cc55cSDimitry Andricdef : InstRW<[P10W_BF_7C, P10W_DISP_EVEN, P10W_BF_7C, P10W_DISP_ANY, P10BF_Read], 252349cc55cSDimitry Andric (instrs 253349cc55cSDimitry Andric VEXPTEFP 254349cc55cSDimitry Andric)>; 255349cc55cSDimitry Andric 256349cc55cSDimitry Andric// 2-way crack instructions 257349cc55cSDimitry Andric// 7 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 2 input operands 258349cc55cSDimitry Andricdef : InstRW<[P10W_BF_7C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 259349cc55cSDimitry Andric (instrs 260349cc55cSDimitry Andric FADD_rec, 261349cc55cSDimitry Andric FADDS_rec, 262349cc55cSDimitry Andric FMUL_rec, 263349cc55cSDimitry Andric FMULS_rec, 264349cc55cSDimitry Andric FSUB_rec, 265349cc55cSDimitry Andric FSUBS_rec 266349cc55cSDimitry Andric)>; 267349cc55cSDimitry Andric 268349cc55cSDimitry Andric// 2-way crack instructions 269349cc55cSDimitry Andric// 7 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 1 input operands 270349cc55cSDimitry Andricdef : InstRW<[P10W_BF_7C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 271349cc55cSDimitry Andric (instrs 272349cc55cSDimitry Andric FCFID_rec, 273349cc55cSDimitry Andric FCFIDS_rec, 274349cc55cSDimitry Andric FCFIDU_rec, 275349cc55cSDimitry Andric FCFIDUS_rec, 276349cc55cSDimitry Andric FCTID_rec, 277349cc55cSDimitry Andric FCTIDU_rec, 278349cc55cSDimitry Andric FCTIDUZ_rec, 279349cc55cSDimitry Andric FCTIDZ_rec, 280349cc55cSDimitry Andric FCTIW_rec, 281349cc55cSDimitry Andric FCTIWU_rec, 282349cc55cSDimitry Andric FCTIWUZ_rec, 283349cc55cSDimitry Andric FCTIWZ_rec, 284349cc55cSDimitry Andric FRE_rec, 285349cc55cSDimitry Andric FRES_rec, 286349cc55cSDimitry Andric FRIMD_rec, FRIMS_rec, 287349cc55cSDimitry Andric FRIND_rec, FRINS_rec, 288349cc55cSDimitry Andric FRIPD_rec, FRIPS_rec, 289349cc55cSDimitry Andric FRIZD_rec, FRIZS_rec, 290349cc55cSDimitry Andric FRSP_rec, 291349cc55cSDimitry Andric FRSQRTE_rec, 292349cc55cSDimitry Andric FRSQRTES_rec 293349cc55cSDimitry Andric)>; 294349cc55cSDimitry Andric 295349cc55cSDimitry Andric// 2-way crack instructions 296349cc55cSDimitry Andric// 7 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 3 input operands 297349cc55cSDimitry Andricdef : InstRW<[P10W_BF_7C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 298349cc55cSDimitry Andric (instrs 299349cc55cSDimitry Andric FMADD_rec, 300349cc55cSDimitry Andric FMADDS_rec, 301349cc55cSDimitry Andric FMSUB_rec, 302349cc55cSDimitry Andric FMSUBS_rec, 303349cc55cSDimitry Andric FNMADD_rec, 304349cc55cSDimitry Andric FNMADDS_rec, 305349cc55cSDimitry Andric FNMSUB_rec, 306349cc55cSDimitry Andric FNMSUBS_rec, 307349cc55cSDimitry Andric FSELD_rec, FSELS_rec 308349cc55cSDimitry Andric)>; 309349cc55cSDimitry Andric 310349cc55cSDimitry Andric// 2 Cycles Branch operations, 1 input operands 311349cc55cSDimitry Andricdef : InstRW<[P10W_BR_2C, P10W_DISP_ANY, P10BR_Read], 312349cc55cSDimitry Andric (instrs 313349cc55cSDimitry Andric B, BCC, BCCA, BCCCTR, BCCCTR8, BCCCTRL, BCCCTRL8, BCCL, BCCLA, BCCLR, BCCLRL, CTRL_DEP, TAILB, TAILB8, 314349cc55cSDimitry Andric BA, TAILBA, TAILBA8, 31506c3fb27SDimitry Andric BCCTR, BCCTR8, BCCTR8n, BCCTRn, gBCCTR, 31606c3fb27SDimitry Andric BCCTRL, BCCTRL8, BCCTRL8n, BCCTRLn, gBCCTRL, 31706c3fb27SDimitry Andric BCLR, BCLRn, BDNZLR, BDNZLR8, BDNZLRm, BDNZLRp, BDZLR, BDZLR8, BDZLRm, BDZLRp, gBCLR, 31806c3fb27SDimitry Andric BCLRL, BCLRLn, BDNZLRL, BDNZLRLm, BDNZLRLp, BDZLRL, BDZLRLm, BDZLRLp, gBCLRL, 31906c3fb27SDimitry Andric BL, BL8, BL8_NOP, BL8_NOP_RM, BL8_NOP_TLS, BL8_NOTOC, BL8_NOTOC_RM, BL8_NOTOC_TLS, BL8_RM, BL8_TLS, BL8_TLS_, BLR, BLR8, BLRL, BL_NOP, BL_NOP_RM, BL_RM, BL_TLS, 320349cc55cSDimitry Andric BLA, BLA8, BLA8_NOP, BLA8_NOP_RM, BLA8_RM, BLA_RM 321349cc55cSDimitry Andric)>; 322349cc55cSDimitry Andric 32306c3fb27SDimitry Andric// 2 Cycles Branch operations, 2 input operands 32406c3fb27SDimitry Andricdef : InstRW<[P10W_BR_2C, P10W_DISP_ANY, P10BR_Read, P10BR_Read], 325349cc55cSDimitry Andric (instrs 32606c3fb27SDimitry Andric BC, BCTR, BCTR8, BCTRL, BCTRL8, BCTRL8_LDinto_toc, BCTRL8_LDinto_toc_RM, BCTRL8_RM, BCTRL_LWZinto_toc, BCTRL_LWZinto_toc_RM, BCTRL_RM, BCn, BDNZ, BDNZ8, BDNZm, BDNZp, BDZ, BDZ8, BDZm, BDZp, TAILBCTR, TAILBCTR8, gBC, gBCat, 327349cc55cSDimitry Andric BDNZA, BDNZAm, BDNZAp, BDZA, BDZAm, BDZAp, gBCA, gBCAat, 32806c3fb27SDimitry Andric BCL, BCLalways, BCLn, BDNZL, BDNZLm, BDNZLp, BDZL, BDZLm, BDZLp, gBCL, gBCLat, 329349cc55cSDimitry Andric BDNZLA, BDNZLAm, BDNZLAp, BDZLA, BDZLAm, BDZLAp, gBCLA, gBCLAat 330349cc55cSDimitry Andric)>; 331349cc55cSDimitry Andric 332349cc55cSDimitry Andric// 7 Cycles Crypto operations, 1 input operands 333349cc55cSDimitry Andricdef : InstRW<[P10W_CY_7C, P10W_DISP_ANY, P10CY_Read], 334349cc55cSDimitry Andric (instrs 33506c3fb27SDimitry Andric VGNB, 336349cc55cSDimitry Andric VSBOX 337349cc55cSDimitry Andric)>; 338349cc55cSDimitry Andric 339349cc55cSDimitry Andric// 7 Cycles Crypto operations, 2 input operands 340349cc55cSDimitry Andricdef : InstRW<[P10W_CY_7C, P10W_DISP_ANY, P10CY_Read, P10CY_Read], 341349cc55cSDimitry Andric (instrs 342349cc55cSDimitry Andric CFUGED, 343349cc55cSDimitry Andric CNTLZDM, 344349cc55cSDimitry Andric CNTTZDM, 345349cc55cSDimitry Andric PDEPD, 346349cc55cSDimitry Andric PEXTD, 347349cc55cSDimitry Andric VCFUGED, 348349cc55cSDimitry Andric VCIPHER, 349349cc55cSDimitry Andric VCIPHERLAST, 350349cc55cSDimitry Andric VCLZDM, 351349cc55cSDimitry Andric VCTZDM, 352349cc55cSDimitry Andric VNCIPHER, 353349cc55cSDimitry Andric VNCIPHERLAST, 354349cc55cSDimitry Andric VPDEPD, 355349cc55cSDimitry Andric VPEXTD, 356349cc55cSDimitry Andric VPMSUMB, 357349cc55cSDimitry Andric VPMSUMD, 358349cc55cSDimitry Andric VPMSUMH, 359349cc55cSDimitry Andric VPMSUMW 360349cc55cSDimitry Andric)>; 361349cc55cSDimitry Andric 362349cc55cSDimitry Andric// 13 Cycles Decimal Floating Point operations, 1 input operands 363349cc55cSDimitry Andricdef : InstRW<[P10W_DF_13C, P10W_DISP_ANY, P10DF_Read], 364349cc55cSDimitry Andric (instrs 365349cc55cSDimitry Andric XSCVDPQP, 366349cc55cSDimitry Andric XSCVQPDP, 367349cc55cSDimitry Andric XSCVQPDPO, 368349cc55cSDimitry Andric XSCVQPSDZ, 369349cc55cSDimitry Andric XSCVQPSQZ, 370349cc55cSDimitry Andric XSCVQPSWZ, 371349cc55cSDimitry Andric XSCVQPUDZ, 372349cc55cSDimitry Andric XSCVQPUQZ, 373349cc55cSDimitry Andric XSCVQPUWZ, 374349cc55cSDimitry Andric XSCVSDQP, 375349cc55cSDimitry Andric XSCVSQQP, 376349cc55cSDimitry Andric XSCVUDQP, 37706c3fb27SDimitry Andric XSCVUQQP, 37806c3fb27SDimitry Andric XSRQPI, 37906c3fb27SDimitry Andric XSRQPIX, 38006c3fb27SDimitry Andric XSRQPXP 381349cc55cSDimitry Andric)>; 382349cc55cSDimitry Andric 383349cc55cSDimitry Andric// 13 Cycles Decimal Floating Point operations, 2 input operands 384349cc55cSDimitry Andricdef : InstRW<[P10W_DF_13C, P10W_DISP_ANY, P10DF_Read, P10DF_Read], 385349cc55cSDimitry Andric (instrs 38606c3fb27SDimitry Andric BCDSR_rec, 387349cc55cSDimitry Andric XSADDQP, 388349cc55cSDimitry Andric XSADDQPO, 389349cc55cSDimitry Andric XSSUBQP, 390349cc55cSDimitry Andric XSSUBQPO 391349cc55cSDimitry Andric)>; 392349cc55cSDimitry Andric 393349cc55cSDimitry Andric// 2-way crack instructions 39406c3fb27SDimitry Andric// 13 Cycles Decimal Floating Point operations, and 3 Cycles Store operations, 1 input operands 395349cc55cSDimitry Andricdef : InstRW<[P10W_DF_13C, P10W_DISP_EVEN, P10W_ST_3C, P10W_DISP_ANY], 396349cc55cSDimitry Andric (instrs 39704eeddc0SDimitry Andric HASHST, HASHST8, 39804eeddc0SDimitry Andric HASHSTP, HASHSTP8 399349cc55cSDimitry Andric)>; 400349cc55cSDimitry Andric 401349cc55cSDimitry Andric// 24 Cycles Decimal Floating Point operations, 1 input operands 402349cc55cSDimitry Andricdef : InstRW<[P10W_DF_24C, P10W_DISP_ANY, P10DF_Read], 403349cc55cSDimitry Andric (instrs 404349cc55cSDimitry Andric BCDCTSQ_rec 405349cc55cSDimitry Andric)>; 406349cc55cSDimitry Andric 407349cc55cSDimitry Andric// 25 Cycles Decimal Floating Point operations, 2 input operands 408349cc55cSDimitry Andricdef : InstRW<[P10W_DF_25C, P10W_DISP_ANY, P10DF_Read, P10DF_Read], 409349cc55cSDimitry Andric (instrs 410349cc55cSDimitry Andric XSMULQP, 411349cc55cSDimitry Andric XSMULQPO 412349cc55cSDimitry Andric)>; 413349cc55cSDimitry Andric 414349cc55cSDimitry Andric// 25 Cycles Decimal Floating Point operations, 3 input operands 415349cc55cSDimitry Andricdef : InstRW<[P10W_DF_25C, P10W_DISP_ANY, P10DF_Read, P10DF_Read, P10DF_Read], 416349cc55cSDimitry Andric (instrs 417349cc55cSDimitry Andric XSMADDQP, 418349cc55cSDimitry Andric XSMADDQPO, 419349cc55cSDimitry Andric XSMSUBQP, 420349cc55cSDimitry Andric XSMSUBQPO, 421349cc55cSDimitry Andric XSNMADDQP, 422349cc55cSDimitry Andric XSNMADDQPO, 423349cc55cSDimitry Andric XSNMSUBQP, 424349cc55cSDimitry Andric XSNMSUBQPO 425349cc55cSDimitry Andric)>; 426349cc55cSDimitry Andric 42706c3fb27SDimitry Andric// 38 Cycles Decimal Floating Point operations, 1 input operands 42806c3fb27SDimitry Andricdef : InstRW<[P10W_DF_38C, P10W_DISP_ANY, P10DF_Read], 429349cc55cSDimitry Andric (instrs 430349cc55cSDimitry Andric BCDCFSQ_rec 431349cc55cSDimitry Andric)>; 432349cc55cSDimitry Andric 433349cc55cSDimitry Andric// 59 Cycles Decimal Floating Point operations, 2 input operands 434349cc55cSDimitry Andricdef : InstRW<[P10W_DF_59C, P10W_DISP_ANY, P10DF_Read, P10DF_Read], 435349cc55cSDimitry Andric (instrs 436349cc55cSDimitry Andric XSDIVQP, 437349cc55cSDimitry Andric XSDIVQPO 438349cc55cSDimitry Andric)>; 439349cc55cSDimitry Andric 440349cc55cSDimitry Andric// 61 Cycles Decimal Floating Point operations, 2 input operands 441349cc55cSDimitry Andricdef : InstRW<[P10W_DF_61C, P10W_DISP_ANY, P10DF_Read, P10DF_Read], 442349cc55cSDimitry Andric (instrs 443349cc55cSDimitry Andric VDIVESQ, 444349cc55cSDimitry Andric VDIVEUQ, 445349cc55cSDimitry Andric VDIVSQ, 446349cc55cSDimitry Andric VDIVUQ 447349cc55cSDimitry Andric)>; 448349cc55cSDimitry Andric 449349cc55cSDimitry Andric// 68 Cycles Decimal Floating Point operations, 2 input operands 450349cc55cSDimitry Andricdef : InstRW<[P10W_DF_68C, P10W_DISP_ANY, P10DF_Read, P10DF_Read], 451349cc55cSDimitry Andric (instrs 452349cc55cSDimitry Andric VMODSQ, 453349cc55cSDimitry Andric VMODUQ 454349cc55cSDimitry Andric)>; 455349cc55cSDimitry Andric 456349cc55cSDimitry Andric// 77 Cycles Decimal Floating Point operations, 1 input operands 457349cc55cSDimitry Andricdef : InstRW<[P10W_DF_77C, P10W_DISP_ANY, P10DF_Read], 458349cc55cSDimitry Andric (instrs 459349cc55cSDimitry Andric XSSQRTQP, 460349cc55cSDimitry Andric XSSQRTQPO 461349cc55cSDimitry Andric)>; 462349cc55cSDimitry Andric 463349cc55cSDimitry Andric// 20 Cycles Scalar Fixed-Point Divide operations, 2 input operands 464349cc55cSDimitry Andricdef : InstRW<[P10W_DV_20C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 465349cc55cSDimitry Andric (instrs 466349cc55cSDimitry Andric DIVW, 467349cc55cSDimitry Andric DIVWO, 468349cc55cSDimitry Andric DIVWU, 469349cc55cSDimitry Andric DIVWUO, 470349cc55cSDimitry Andric MODSW 471349cc55cSDimitry Andric)>; 472349cc55cSDimitry Andric 473349cc55cSDimitry Andric// 2-way crack instructions 474349cc55cSDimitry Andric// 20 Cycles Scalar Fixed-Point Divide operations, and 3 Cycles ALU operations, 2 input operands 475349cc55cSDimitry Andricdef : InstRW<[P10W_DV_20C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 476349cc55cSDimitry Andric (instrs 477349cc55cSDimitry Andric DIVW_rec, 478349cc55cSDimitry Andric DIVWO_rec, 479349cc55cSDimitry Andric DIVWU_rec, 480349cc55cSDimitry Andric DIVWUO_rec 481349cc55cSDimitry Andric)>; 482349cc55cSDimitry Andric 483349cc55cSDimitry Andric// 25 Cycles Scalar Fixed-Point Divide operations, 2 input operands 484349cc55cSDimitry Andricdef : InstRW<[P10W_DV_25C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 485349cc55cSDimitry Andric (instrs 486349cc55cSDimitry Andric DIVD, 487349cc55cSDimitry Andric DIVDO, 488349cc55cSDimitry Andric DIVDU, 489349cc55cSDimitry Andric DIVDUO, 490349cc55cSDimitry Andric DIVWE, 491349cc55cSDimitry Andric DIVWEO, 492349cc55cSDimitry Andric DIVWEU, 493349cc55cSDimitry Andric DIVWEUO 494349cc55cSDimitry Andric)>; 495349cc55cSDimitry Andric 496349cc55cSDimitry Andric// 2-way crack instructions 497349cc55cSDimitry Andric// 25 Cycles Scalar Fixed-Point Divide operations, and 3 Cycles ALU operations, 2 input operands 498349cc55cSDimitry Andricdef : InstRW<[P10W_DV_25C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 499349cc55cSDimitry Andric (instrs 500349cc55cSDimitry Andric DIVD_rec, 501349cc55cSDimitry Andric DIVDO_rec, 502349cc55cSDimitry Andric DIVDU_rec, 503349cc55cSDimitry Andric DIVDUO_rec, 504349cc55cSDimitry Andric DIVWE_rec, 505349cc55cSDimitry Andric DIVWEO_rec, 506349cc55cSDimitry Andric DIVWEU_rec, 507349cc55cSDimitry Andric DIVWEUO_rec 508349cc55cSDimitry Andric)>; 509349cc55cSDimitry Andric 510349cc55cSDimitry Andric// 27 Cycles Scalar Fixed-Point Divide operations, 2 input operands 511349cc55cSDimitry Andricdef : InstRW<[P10W_DV_27C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 512349cc55cSDimitry Andric (instrs 513349cc55cSDimitry Andric MODSD, 514349cc55cSDimitry Andric MODUD, 515349cc55cSDimitry Andric MODUW 516349cc55cSDimitry Andric)>; 517349cc55cSDimitry Andric 518349cc55cSDimitry Andric// 41 Cycles Scalar Fixed-Point Divide operations, 2 input operands 519349cc55cSDimitry Andricdef : InstRW<[P10W_DV_41C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 520349cc55cSDimitry Andric (instrs 521349cc55cSDimitry Andric DIVDE, 522349cc55cSDimitry Andric DIVDEO, 523349cc55cSDimitry Andric DIVDEU, 524349cc55cSDimitry Andric DIVDEUO 525349cc55cSDimitry Andric)>; 526349cc55cSDimitry Andric 527349cc55cSDimitry Andric// 2-way crack instructions 528349cc55cSDimitry Andric// 41 Cycles Scalar Fixed-Point Divide operations, and 3 Cycles ALU operations, 2 input operands 529349cc55cSDimitry Andricdef : InstRW<[P10W_DV_41C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 530349cc55cSDimitry Andric (instrs 531349cc55cSDimitry Andric DIVDE_rec, 532349cc55cSDimitry Andric DIVDEO_rec, 533349cc55cSDimitry Andric DIVDEU_rec, 534349cc55cSDimitry Andric DIVDEUO_rec 535349cc55cSDimitry Andric)>; 536349cc55cSDimitry Andric 537349cc55cSDimitry Andric// 43 Cycles Scalar Fixed-Point Divide operations, 2 input operands 538349cc55cSDimitry Andricdef : InstRW<[P10W_DV_43C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 539349cc55cSDimitry Andric (instrs 540349cc55cSDimitry Andric VDIVSD, 541349cc55cSDimitry Andric VDIVUD 542349cc55cSDimitry Andric)>; 543349cc55cSDimitry Andric 544349cc55cSDimitry Andric// 47 Cycles Scalar Fixed-Point Divide operations, 2 input operands 545349cc55cSDimitry Andricdef : InstRW<[P10W_DV_47C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 546349cc55cSDimitry Andric (instrs 547349cc55cSDimitry Andric VMODSD, 548349cc55cSDimitry Andric VMODUD 549349cc55cSDimitry Andric)>; 550349cc55cSDimitry Andric 551349cc55cSDimitry Andric// 54 Cycles Scalar Fixed-Point Divide operations, 2 input operands 552349cc55cSDimitry Andricdef : InstRW<[P10W_DV_54C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 553349cc55cSDimitry Andric (instrs 554349cc55cSDimitry Andric VDIVSW, 555349cc55cSDimitry Andric VDIVUW 556349cc55cSDimitry Andric)>; 557349cc55cSDimitry Andric 558349cc55cSDimitry Andric// 60 Cycles Scalar Fixed-Point Divide operations, 2 input operands 559349cc55cSDimitry Andricdef : InstRW<[P10W_DV_60C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 560349cc55cSDimitry Andric (instrs 561349cc55cSDimitry Andric VMODSW, 562349cc55cSDimitry Andric VMODUW 563349cc55cSDimitry Andric)>; 564349cc55cSDimitry Andric 565349cc55cSDimitry Andric// 75 Cycles Scalar Fixed-Point Divide operations, 2 input operands 566349cc55cSDimitry Andricdef : InstRW<[P10W_DV_75C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 567349cc55cSDimitry Andric (instrs 568349cc55cSDimitry Andric VDIVESD, 569349cc55cSDimitry Andric VDIVEUD 570349cc55cSDimitry Andric)>; 571349cc55cSDimitry Andric 572349cc55cSDimitry Andric// 83 Cycles Scalar Fixed-Point Divide operations, 2 input operands 573349cc55cSDimitry Andricdef : InstRW<[P10W_DV_83C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 574349cc55cSDimitry Andric (instrs 575349cc55cSDimitry Andric VDIVESW, 576349cc55cSDimitry Andric VDIVEUW 577349cc55cSDimitry Andric)>; 578349cc55cSDimitry Andric 579349cc55cSDimitry Andric// 5 Cycles Fixed-Point and BCD operations, 1 input operands 580349cc55cSDimitry Andricdef : InstRW<[P10W_DX_5C, P10W_DISP_ANY, P10DX_Read], 581349cc55cSDimitry Andric (instrs 58206c3fb27SDimitry Andric BCDCFN_rec, 58306c3fb27SDimitry Andric BCDCFZ_rec, 584349cc55cSDimitry Andric BCDCTN_rec, 58506c3fb27SDimitry Andric BCDCTZ_rec, 58606c3fb27SDimitry Andric BCDSETSGN_rec, 587349cc55cSDimitry Andric VMUL10CUQ, 588349cc55cSDimitry Andric VMUL10UQ, 58906c3fb27SDimitry Andric XSTSTDCQP, 59006c3fb27SDimitry Andric XSXSIGQP, 59106c3fb27SDimitry Andric XXGENPCVBM 592349cc55cSDimitry Andric)>; 593349cc55cSDimitry Andric 594349cc55cSDimitry Andric// 5 Cycles Fixed-Point and BCD operations, 2 input operands 595349cc55cSDimitry Andricdef : InstRW<[P10W_DX_5C, P10W_DISP_ANY, P10DX_Read, P10DX_Read], 596349cc55cSDimitry Andric (instrs 59706c3fb27SDimitry Andric BCDADD_rec, 598349cc55cSDimitry Andric BCDCPSGN_rec, 59906c3fb27SDimitry Andric BCDS_rec, 60006c3fb27SDimitry Andric BCDSUB_rec, 60106c3fb27SDimitry Andric BCDTRUNC_rec, 602349cc55cSDimitry Andric BCDUS_rec, 603349cc55cSDimitry Andric BCDUTRUNC_rec, 604349cc55cSDimitry Andric VADDCUQ, 605349cc55cSDimitry Andric VADDUQM, 606349cc55cSDimitry Andric VMUL10ECUQ, 607349cc55cSDimitry Andric VMUL10EUQ, 608349cc55cSDimitry Andric VSUBCUQ, 609349cc55cSDimitry Andric VSUBUQM, 610bdd1243dSDimitry Andric XSCMPEQQP, 611349cc55cSDimitry Andric XSCMPEXPQP, 612bdd1243dSDimitry Andric XSCMPGEQP, 613bdd1243dSDimitry Andric XSCMPGTQP, 614349cc55cSDimitry Andric XSCMPOQP, 615349cc55cSDimitry Andric XSCMPUQP, 61604eeddc0SDimitry Andric XSMAXCQP, 61706c3fb27SDimitry Andric XSMINCQP 618349cc55cSDimitry Andric)>; 619349cc55cSDimitry Andric 620349cc55cSDimitry Andric// 5 Cycles Fixed-Point and BCD operations, 3 input operands 621349cc55cSDimitry Andricdef : InstRW<[P10W_DX_5C, P10W_DISP_ANY, P10DX_Read, P10DX_Read, P10DX_Read], 622349cc55cSDimitry Andric (instrs 623349cc55cSDimitry Andric VADDECUQ, 624349cc55cSDimitry Andric VADDEUQM, 625349cc55cSDimitry Andric VSUBECUQ, 626349cc55cSDimitry Andric VSUBEUQM 627349cc55cSDimitry Andric)>; 628349cc55cSDimitry Andric 629349cc55cSDimitry Andric// 4 Cycles ALU2 operations, 0 input operands 630349cc55cSDimitry Andricdef : InstRW<[P10W_F2_4C, P10W_DISP_ANY], 631349cc55cSDimitry Andric (instrs 63206c3fb27SDimitry Andric MTVSRBMI 633349cc55cSDimitry Andric)>; 634349cc55cSDimitry Andric 635349cc55cSDimitry Andric// 4 Cycles ALU2 operations, 1 input operands 636349cc55cSDimitry Andricdef : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read], 637349cc55cSDimitry Andric (instrs 63806c3fb27SDimitry Andric CBCDTD, CBCDTD8, 63906c3fb27SDimitry Andric CDTBCD, CDTBCD8, 640349cc55cSDimitry Andric CNTLZD, 641349cc55cSDimitry Andric CNTLZD_rec, 642349cc55cSDimitry Andric CNTLZW, CNTLZW8, 643349cc55cSDimitry Andric CNTLZW8_rec, CNTLZW_rec, 644349cc55cSDimitry Andric CNTTZD, 645349cc55cSDimitry Andric CNTTZD_rec, 646349cc55cSDimitry Andric CNTTZW, CNTTZW8, 647349cc55cSDimitry Andric CNTTZW8_rec, CNTTZW_rec, 64806c3fb27SDimitry Andric EXTSWSLI_32_64_rec, EXTSWSLI_rec, 649349cc55cSDimitry Andric FTSQRT, 650349cc55cSDimitry Andric MTVSRBM, 651349cc55cSDimitry Andric MTVSRDM, 652349cc55cSDimitry Andric MTVSRHM, 653349cc55cSDimitry Andric MTVSRQM, 654349cc55cSDimitry Andric MTVSRWM, 655349cc55cSDimitry Andric POPCNTB, POPCNTB8, 656349cc55cSDimitry Andric POPCNTD, 657349cc55cSDimitry Andric POPCNTW, 65806c3fb27SDimitry Andric RLDIC_rec, 65906c3fb27SDimitry Andric RLDICL_32_rec, RLDICL_rec, 66006c3fb27SDimitry Andric RLDICR_rec, 66106c3fb27SDimitry Andric RLWINM8_rec, RLWINM_rec, 662349cc55cSDimitry Andric VCLZB, 663349cc55cSDimitry Andric VCLZD, 664349cc55cSDimitry Andric VCLZH, 665349cc55cSDimitry Andric VCLZW, 66606c3fb27SDimitry Andric VCNTMBB, 66706c3fb27SDimitry Andric VCNTMBD, 66806c3fb27SDimitry Andric VCNTMBH, 66906c3fb27SDimitry Andric VCNTMBW, 670349cc55cSDimitry Andric VCTZB, 671349cc55cSDimitry Andric VCTZD, 672349cc55cSDimitry Andric VCTZH, 673349cc55cSDimitry Andric VCTZW, 674349cc55cSDimitry Andric VEXPANDBM, 675349cc55cSDimitry Andric VEXPANDDM, 676349cc55cSDimitry Andric VEXPANDHM, 677349cc55cSDimitry Andric VEXPANDQM, 678349cc55cSDimitry Andric VEXPANDWM, 679349cc55cSDimitry Andric VEXTRACTBM, 680349cc55cSDimitry Andric VEXTRACTDM, 681349cc55cSDimitry Andric VEXTRACTHM, 682349cc55cSDimitry Andric VEXTRACTQM, 683349cc55cSDimitry Andric VEXTRACTWM, 684349cc55cSDimitry Andric VPOPCNTB, 685349cc55cSDimitry Andric VPOPCNTD, 686349cc55cSDimitry Andric VPOPCNTH, 687349cc55cSDimitry Andric VPOPCNTW, 688349cc55cSDimitry Andric VPRTYBD, 689349cc55cSDimitry Andric VPRTYBW, 69006c3fb27SDimitry Andric VSHASIGMAD, 69106c3fb27SDimitry Andric VSHASIGMAW, 692349cc55cSDimitry Andric XSCVHPDP, 693349cc55cSDimitry Andric XSCVSPDPN, 694349cc55cSDimitry Andric XSTSQRTDP, 69506c3fb27SDimitry Andric XSTSTDCDP, 69606c3fb27SDimitry Andric XSTSTDCSP, 697349cc55cSDimitry Andric XVCVHPSP, 698349cc55cSDimitry Andric XVTLSBB, 699349cc55cSDimitry Andric XVTSQRTDP, 70006c3fb27SDimitry Andric XVTSQRTSP, 70106c3fb27SDimitry Andric XVTSTDCDP, 70206c3fb27SDimitry Andric XVTSTDCSP 703349cc55cSDimitry Andric)>; 704349cc55cSDimitry Andric 705349cc55cSDimitry Andric// 4 Cycles ALU2 operations, 2 input operands 706349cc55cSDimitry Andricdef : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read, P10F2_Read], 707349cc55cSDimitry Andric (instrs 708349cc55cSDimitry Andric CMPEQB, 70906c3fb27SDimitry Andric CMPRB, CMPRB8, 710349cc55cSDimitry Andric FCMPOD, FCMPOS, 711349cc55cSDimitry Andric FCMPUD, FCMPUS, 712349cc55cSDimitry Andric FTDIV, 71306c3fb27SDimitry Andric RLDCL_rec, 71406c3fb27SDimitry Andric RLDCR_rec, 71506c3fb27SDimitry Andric RLDIMI_rec, 71606c3fb27SDimitry Andric RLWIMI8_rec, RLWIMI_rec, 71706c3fb27SDimitry Andric RLWNM8_rec, RLWNM_rec, 718349cc55cSDimitry Andric SLD_rec, 719349cc55cSDimitry Andric SLW8_rec, SLW_rec, 720349cc55cSDimitry Andric SRD_rec, 721349cc55cSDimitry Andric SRW8_rec, SRW_rec, 72206c3fb27SDimitry Andric TDI, 72306c3fb27SDimitry Andric TWI, 724349cc55cSDimitry Andric VABSDUB, 725349cc55cSDimitry Andric VABSDUH, 726349cc55cSDimitry Andric VABSDUW, 727349cc55cSDimitry Andric VADDCUW, 728349cc55cSDimitry Andric VADDSBS, 729349cc55cSDimitry Andric VADDSHS, 730349cc55cSDimitry Andric VADDSWS, 731349cc55cSDimitry Andric VADDUBS, 732349cc55cSDimitry Andric VADDUHS, 733349cc55cSDimitry Andric VADDUWS, 734349cc55cSDimitry Andric VAVGSB, 735349cc55cSDimitry Andric VAVGSH, 736349cc55cSDimitry Andric VAVGSW, 737349cc55cSDimitry Andric VAVGUB, 738349cc55cSDimitry Andric VAVGUH, 739349cc55cSDimitry Andric VAVGUW, 740349cc55cSDimitry Andric VCMPBFP, 741349cc55cSDimitry Andric VCMPBFP_rec, 742349cc55cSDimitry Andric VCMPEQFP, 743349cc55cSDimitry Andric VCMPEQFP_rec, 744349cc55cSDimitry Andric VCMPEQUB_rec, 745349cc55cSDimitry Andric VCMPEQUD_rec, 746349cc55cSDimitry Andric VCMPEQUH_rec, 747349cc55cSDimitry Andric VCMPEQUQ, 748349cc55cSDimitry Andric VCMPEQUQ_rec, 749349cc55cSDimitry Andric VCMPEQUW_rec, 750349cc55cSDimitry Andric VCMPGEFP, 751349cc55cSDimitry Andric VCMPGEFP_rec, 752349cc55cSDimitry Andric VCMPGTFP, 753349cc55cSDimitry Andric VCMPGTFP_rec, 754349cc55cSDimitry Andric VCMPGTSB_rec, 755349cc55cSDimitry Andric VCMPGTSD_rec, 756349cc55cSDimitry Andric VCMPGTSH_rec, 757349cc55cSDimitry Andric VCMPGTSQ, 758349cc55cSDimitry Andric VCMPGTSQ_rec, 759349cc55cSDimitry Andric VCMPGTSW_rec, 760349cc55cSDimitry Andric VCMPGTUB_rec, 761349cc55cSDimitry Andric VCMPGTUD_rec, 762349cc55cSDimitry Andric VCMPGTUH_rec, 763349cc55cSDimitry Andric VCMPGTUQ, 764349cc55cSDimitry Andric VCMPGTUQ_rec, 765349cc55cSDimitry Andric VCMPGTUW_rec, 766349cc55cSDimitry Andric VCMPNEB_rec, 767349cc55cSDimitry Andric VCMPNEH_rec, 768349cc55cSDimitry Andric VCMPNEW_rec, 769349cc55cSDimitry Andric VCMPNEZB_rec, 770349cc55cSDimitry Andric VCMPNEZH_rec, 771349cc55cSDimitry Andric VCMPNEZW_rec, 772349cc55cSDimitry Andric VCMPSQ, 773349cc55cSDimitry Andric VCMPUQ, 774349cc55cSDimitry Andric VMAXFP, 775349cc55cSDimitry Andric VMINFP, 776349cc55cSDimitry Andric VSUBCUW, 777349cc55cSDimitry Andric VSUBSBS, 778349cc55cSDimitry Andric VSUBSHS, 779349cc55cSDimitry Andric VSUBSWS, 780349cc55cSDimitry Andric VSUBUBS, 781349cc55cSDimitry Andric VSUBUHS, 782349cc55cSDimitry Andric VSUBUWS, 783349cc55cSDimitry Andric XSCMPEQDP, 784349cc55cSDimitry Andric XSCMPEXPDP, 785349cc55cSDimitry Andric XSCMPGEDP, 786349cc55cSDimitry Andric XSCMPGTDP, 787349cc55cSDimitry Andric XSCMPODP, 788349cc55cSDimitry Andric XSCMPUDP, 789349cc55cSDimitry Andric XSMAXCDP, 790349cc55cSDimitry Andric XSMAXDP, 791349cc55cSDimitry Andric XSMAXJDP, 792349cc55cSDimitry Andric XSMINCDP, 793349cc55cSDimitry Andric XSMINDP, 794349cc55cSDimitry Andric XSMINJDP, 795349cc55cSDimitry Andric XSTDIVDP, 796349cc55cSDimitry Andric XVCMPEQDP, 797349cc55cSDimitry Andric XVCMPEQDP_rec, 798349cc55cSDimitry Andric XVCMPEQSP, 799349cc55cSDimitry Andric XVCMPEQSP_rec, 800349cc55cSDimitry Andric XVCMPGEDP, 801349cc55cSDimitry Andric XVCMPGEDP_rec, 802349cc55cSDimitry Andric XVCMPGESP, 803349cc55cSDimitry Andric XVCMPGESP_rec, 804349cc55cSDimitry Andric XVCMPGTDP, 805349cc55cSDimitry Andric XVCMPGTDP_rec, 806349cc55cSDimitry Andric XVCMPGTSP, 807349cc55cSDimitry Andric XVCMPGTSP_rec, 808349cc55cSDimitry Andric XVMAXDP, 809349cc55cSDimitry Andric XVMAXSP, 810349cc55cSDimitry Andric XVMINDP, 811349cc55cSDimitry Andric XVMINSP, 812349cc55cSDimitry Andric XVTDIVDP, 81306c3fb27SDimitry Andric XVTDIVSP 814349cc55cSDimitry Andric)>; 815349cc55cSDimitry Andric 816349cc55cSDimitry Andric// 4 Cycles ALU2 operations, 3 input operands 817349cc55cSDimitry Andricdef : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read, P10F2_Read, P10F2_Read], 818349cc55cSDimitry Andric (instrs 819349cc55cSDimitry Andric TD, 82006c3fb27SDimitry Andric TRAP, TW 821349cc55cSDimitry Andric)>; 822349cc55cSDimitry Andric 82306c3fb27SDimitry Andric// Single crack instructions 82406c3fb27SDimitry Andric// 4 Cycles ALU2 operations, 1 input operands 82506c3fb27SDimitry Andricdef : InstRW<[P10W_F2_4C, P10W_DISP_EVEN, P10W_DISP_ANY, P10F2_Read], 826349cc55cSDimitry Andric (instrs 82706c3fb27SDimitry Andric SRADI_rec, 8285f757f3fSDimitry Andric SRAWI_rec 829349cc55cSDimitry Andric)>; 830349cc55cSDimitry Andric 831349cc55cSDimitry Andric// Single crack instructions 832349cc55cSDimitry Andric// 4 Cycles ALU2 operations, 2 input operands 833349cc55cSDimitry Andricdef : InstRW<[P10W_F2_4C, P10W_DISP_EVEN, P10W_DISP_ANY, P10F2_Read, P10F2_Read], 834349cc55cSDimitry Andric (instrs 835349cc55cSDimitry Andric SRAD_rec, 8365f757f3fSDimitry Andric SRAW_rec 837349cc55cSDimitry Andric)>; 838349cc55cSDimitry Andric 839349cc55cSDimitry Andric// 2-way crack instructions 840349cc55cSDimitry Andric// 4 Cycles ALU2 operations, and 4 Cycles Permute operations, 2 input operands 841349cc55cSDimitry Andricdef : InstRW<[P10W_F2_4C, P10W_DISP_EVEN, P10W_PM_4C, P10W_DISP_ANY], 842349cc55cSDimitry Andric (instrs 843349cc55cSDimitry Andric VRLQ, 844349cc55cSDimitry Andric VRLQNM, 845349cc55cSDimitry Andric VSLQ, 846349cc55cSDimitry Andric VSRAQ, 847349cc55cSDimitry Andric VSRQ 848349cc55cSDimitry Andric)>; 849349cc55cSDimitry Andric 850349cc55cSDimitry Andric// 2-way crack instructions 851349cc55cSDimitry Andric// 4 Cycles ALU2 operations, and 4 Cycles Permute operations, 3 input operands 852349cc55cSDimitry Andricdef : InstRW<[P10W_F2_4C, P10W_DISP_EVEN, P10W_PM_4C, P10W_DISP_ANY], 853349cc55cSDimitry Andric (instrs 854349cc55cSDimitry Andric VRLQMI 855349cc55cSDimitry Andric)>; 856349cc55cSDimitry Andric 857349cc55cSDimitry Andric// 2-way crack instructions 858349cc55cSDimitry Andric// 4 Cycles ALU2 operations, and 4 Cycles ALU2 operations, 0 input operands 859349cc55cSDimitry Andricdef : InstRW<[P10W_F2_4C, P10W_DISP_PAIR, P10W_F2_4C], 860349cc55cSDimitry Andric (instrs 861349cc55cSDimitry Andric MFCR, MFCR8 862349cc55cSDimitry Andric)>; 863349cc55cSDimitry Andric 864349cc55cSDimitry Andric// 2 Cycles ALU operations, 1 input operands 865349cc55cSDimitry Andricdef : InstRW<[P10W_FX_2C, P10W_DISP_ANY, P10FX_Read], 866349cc55cSDimitry Andric (instrs 867349cc55cSDimitry Andric MTCTR, MTCTR8, MTCTR8loop, MTCTRloop, 868349cc55cSDimitry Andric MTLR, MTLR8 869349cc55cSDimitry Andric)>; 870349cc55cSDimitry Andric 871349cc55cSDimitry Andric// 3 Cycles ALU operations, 0 input operands 872349cc55cSDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_ANY], 873349cc55cSDimitry Andric (instrs 874349cc55cSDimitry Andric DSS, DSSALL, 875349cc55cSDimitry Andric MCRXRX, 876349cc55cSDimitry Andric MFCTR, MFCTR8, 877349cc55cSDimitry Andric MFLR, MFLR8, 8785f757f3fSDimitry Andric WAIT, WAITP10 879349cc55cSDimitry Andric)>; 880349cc55cSDimitry Andric 881349cc55cSDimitry Andric// 3 Cycles ALU operations, 1 input operands 882349cc55cSDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read], 883349cc55cSDimitry Andric (instrs 884*0fca6ea1SDimitry Andric ADDI, ADDI8, ADDIdtprelL32, ADDItlsldLADDR32, ADDItocL, ADDItocL8, LI, LI8, 88506c3fb27SDimitry Andric ADDIC, ADDIC8, 886349cc55cSDimitry Andric ADDIS, ADDIS8, ADDISdtprelHA32, ADDIStocHA, ADDIStocHA8, LIS, LIS8, 887349cc55cSDimitry Andric ADDME, ADDME8, 888349cc55cSDimitry Andric ADDME8O, ADDMEO, 889349cc55cSDimitry Andric ADDZE, ADDZE8, 890349cc55cSDimitry Andric ADDZE8O, ADDZEO, 89106c3fb27SDimitry Andric ANDI8_rec, ANDI_rec, 89206c3fb27SDimitry Andric ANDIS8_rec, ANDIS_rec, 89306c3fb27SDimitry Andric CMPDI, CMPWI, 89406c3fb27SDimitry Andric CMPLDI, CMPLWI, 895349cc55cSDimitry Andric EXTSB, EXTSB8, EXTSB8_32_64, 896349cc55cSDimitry Andric EXTSB8_rec, EXTSB_rec, 897349cc55cSDimitry Andric EXTSH, EXTSH8, EXTSH8_32_64, 898349cc55cSDimitry Andric EXTSH8_rec, EXTSH_rec, 899349cc55cSDimitry Andric EXTSW, EXTSW_32, EXTSW_32_64, 900349cc55cSDimitry Andric EXTSW_32_64_rec, EXTSW_rec, 90106c3fb27SDimitry Andric EXTSWSLI, EXTSWSLI_32_64, 902349cc55cSDimitry Andric FABSD, FABSS, 903349cc55cSDimitry Andric FMR, 904349cc55cSDimitry Andric FNABSD, FNABSS, 905349cc55cSDimitry Andric FNEGD, FNEGS, 906349cc55cSDimitry Andric MCRF, 907349cc55cSDimitry Andric MFOCRF, MFOCRF8, 908349cc55cSDimitry Andric MFVRD, MFVSRD, 909349cc55cSDimitry Andric MFVRWZ, MFVSRWZ, 910349cc55cSDimitry Andric MTOCRF, MTOCRF8, 911349cc55cSDimitry Andric MTVRD, MTVSRD, 912349cc55cSDimitry Andric MTVRWA, MTVSRWA, 913349cc55cSDimitry Andric MTVRWZ, MTVSRWZ, 914349cc55cSDimitry Andric NEG, NEG8, 915349cc55cSDimitry Andric NEG8_rec, NEG_rec, 916349cc55cSDimitry Andric NEG8O, NEGO, 91706c3fb27SDimitry Andric NOP, NOP_GT_PWR6, NOP_GT_PWR7, ORI, ORI8, 91806c3fb27SDimitry Andric ORIS, ORIS8, 91906c3fb27SDimitry Andric RLDIC, 92006c3fb27SDimitry Andric RLDICL, RLDICL_32, RLDICL_32_64, 92106c3fb27SDimitry Andric RLDICR, RLDICR_32, 92206c3fb27SDimitry Andric RLWINM, RLWINM8, 923349cc55cSDimitry Andric SETB, SETB8, 924349cc55cSDimitry Andric SETBC, SETBC8, 925349cc55cSDimitry Andric SETBCR, SETBCR8, 926349cc55cSDimitry Andric SETNBC, SETNBC8, 927349cc55cSDimitry Andric SETNBCR, SETNBCR8, 92806c3fb27SDimitry Andric SRADI, SRADI_32, 92906c3fb27SDimitry Andric SRAWI, 93006c3fb27SDimitry Andric SUBFIC, SUBFIC8, 931349cc55cSDimitry Andric SUBFME, SUBFME8, 932349cc55cSDimitry Andric SUBFME8O, SUBFMEO, 933349cc55cSDimitry Andric SUBFZE, SUBFZE8, 934349cc55cSDimitry Andric SUBFZE8O, SUBFZEO, 935349cc55cSDimitry Andric VEXTSB2D, VEXTSB2Ds, 936349cc55cSDimitry Andric VEXTSB2W, VEXTSB2Ws, 937349cc55cSDimitry Andric VEXTSD2Q, 938349cc55cSDimitry Andric VEXTSH2D, VEXTSH2Ds, 939349cc55cSDimitry Andric VEXTSH2W, VEXTSH2Ws, 940349cc55cSDimitry Andric VEXTSW2D, VEXTSW2Ds, 941349cc55cSDimitry Andric VNEGD, 942349cc55cSDimitry Andric VNEGW, 94306c3fb27SDimitry Andric XORI, XORI8, 94406c3fb27SDimitry Andric XORIS, XORIS8, 945349cc55cSDimitry Andric XSABSDP, 946349cc55cSDimitry Andric XSABSQP, 94781ad6265SDimitry Andric XSNABSDP, XSNABSDPs, 948349cc55cSDimitry Andric XSNABSQP, 949349cc55cSDimitry Andric XSNEGDP, 950349cc55cSDimitry Andric XSNEGQP, 951349cc55cSDimitry Andric XSXEXPDP, 952349cc55cSDimitry Andric XSXEXPQP, 953349cc55cSDimitry Andric XSXSIGDP, 954349cc55cSDimitry Andric XVABSDP, 955349cc55cSDimitry Andric XVABSSP, 956349cc55cSDimitry Andric XVNABSDP, 957349cc55cSDimitry Andric XVNABSSP, 958349cc55cSDimitry Andric XVNEGDP, 959349cc55cSDimitry Andric XVNEGSP, 960349cc55cSDimitry Andric XVXEXPDP, 961349cc55cSDimitry Andric XVXEXPSP, 962349cc55cSDimitry Andric XVXSIGDP, 963349cc55cSDimitry Andric XVXSIGSP 964349cc55cSDimitry Andric)>; 965349cc55cSDimitry Andric 966349cc55cSDimitry Andric// 3 Cycles ALU operations, 2 input operands 967349cc55cSDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read], 968349cc55cSDimitry Andric (instrs 969349cc55cSDimitry Andric ADD4, ADD4TLS, ADD8, ADD8TLS, ADD8TLS_, 970349cc55cSDimitry Andric ADD4_rec, ADD8_rec, 971349cc55cSDimitry Andric ADDE, ADDE8, 972349cc55cSDimitry Andric ADDE8O, ADDEO, 97306c3fb27SDimitry Andric ADDEX, ADDEX8, 974349cc55cSDimitry Andric ADD4O, ADD8O, 975349cc55cSDimitry Andric AND, AND8, 976349cc55cSDimitry Andric AND8_rec, AND_rec, 977349cc55cSDimitry Andric ANDC, ANDC8, 978349cc55cSDimitry Andric ANDC8_rec, ANDC_rec, 979349cc55cSDimitry Andric CMPD, CMPW, 980349cc55cSDimitry Andric CMPB, CMPB8, 981349cc55cSDimitry Andric CMPLD, CMPLW, 982349cc55cSDimitry Andric CRAND, 983349cc55cSDimitry Andric CRANDC, 98406c3fb27SDimitry Andric CR6SET, CREQV, CRSET, 985349cc55cSDimitry Andric CRNAND, 986349cc55cSDimitry Andric CRNOR, 987349cc55cSDimitry Andric CROR, 988349cc55cSDimitry Andric CRORC, 989349cc55cSDimitry Andric CR6UNSET, CRUNSET, CRXOR, 99006c3fb27SDimitry Andric DST, DST64, DSTT, DSTT64, 99106c3fb27SDimitry Andric DSTST, DSTST64, DSTSTT, DSTSTT64, 992349cc55cSDimitry Andric EQV, EQV8, 993349cc55cSDimitry Andric EQV8_rec, EQV_rec, 994349cc55cSDimitry Andric FCPSGND, FCPSGNS, 995349cc55cSDimitry Andric NAND, NAND8, 996349cc55cSDimitry Andric NAND8_rec, NAND_rec, 997349cc55cSDimitry Andric NOR, NOR8, 998349cc55cSDimitry Andric NOR8_rec, NOR_rec, 999349cc55cSDimitry Andric COPY, OR, OR8, 1000349cc55cSDimitry Andric OR8_rec, OR_rec, 1001349cc55cSDimitry Andric ORC, ORC8, 1002349cc55cSDimitry Andric ORC8_rec, ORC_rec, 100306c3fb27SDimitry Andric RLDCL, 100406c3fb27SDimitry Andric RLDCR, 100506c3fb27SDimitry Andric RLDIMI, 100606c3fb27SDimitry Andric RLWIMI, RLWIMI8, 100706c3fb27SDimitry Andric RLWNM, RLWNM8, 1008349cc55cSDimitry Andric SLD, 1009349cc55cSDimitry Andric SLW, SLW8, 1010349cc55cSDimitry Andric SRAD, 1011349cc55cSDimitry Andric SRAW, 1012349cc55cSDimitry Andric SRD, 1013349cc55cSDimitry Andric SRW, SRW8, 1014349cc55cSDimitry Andric SUBF, SUBF8, 1015349cc55cSDimitry Andric SUBF8_rec, SUBF_rec, 1016349cc55cSDimitry Andric SUBFE, SUBFE8, 1017349cc55cSDimitry Andric SUBFE8O, SUBFEO, 1018349cc55cSDimitry Andric SUBF8O, SUBFO, 1019349cc55cSDimitry Andric VADDUBM, 1020349cc55cSDimitry Andric VADDUDM, 1021349cc55cSDimitry Andric VADDUHM, 1022349cc55cSDimitry Andric VADDUWM, 1023349cc55cSDimitry Andric VAND, 1024349cc55cSDimitry Andric VANDC, 1025349cc55cSDimitry Andric VCMPEQUB, 1026349cc55cSDimitry Andric VCMPEQUD, 1027349cc55cSDimitry Andric VCMPEQUH, 1028349cc55cSDimitry Andric VCMPEQUW, 1029349cc55cSDimitry Andric VCMPGTSB, 1030349cc55cSDimitry Andric VCMPGTSD, 1031349cc55cSDimitry Andric VCMPGTSH, 1032349cc55cSDimitry Andric VCMPGTSW, 1033349cc55cSDimitry Andric VCMPGTUB, 1034349cc55cSDimitry Andric VCMPGTUD, 1035349cc55cSDimitry Andric VCMPGTUH, 1036349cc55cSDimitry Andric VCMPGTUW, 1037349cc55cSDimitry Andric VCMPNEB, 1038349cc55cSDimitry Andric VCMPNEH, 1039349cc55cSDimitry Andric VCMPNEW, 1040349cc55cSDimitry Andric VCMPNEZB, 1041349cc55cSDimitry Andric VCMPNEZH, 1042349cc55cSDimitry Andric VCMPNEZW, 1043349cc55cSDimitry Andric VEQV, 1044349cc55cSDimitry Andric VMAXSB, 1045349cc55cSDimitry Andric VMAXSD, 1046349cc55cSDimitry Andric VMAXSH, 1047349cc55cSDimitry Andric VMAXSW, 1048349cc55cSDimitry Andric VMAXUB, 1049349cc55cSDimitry Andric VMAXUD, 1050349cc55cSDimitry Andric VMAXUH, 1051349cc55cSDimitry Andric VMAXUW, 1052349cc55cSDimitry Andric VMINSB, 1053349cc55cSDimitry Andric VMINSD, 1054349cc55cSDimitry Andric VMINSH, 1055349cc55cSDimitry Andric VMINSW, 1056349cc55cSDimitry Andric VMINUB, 1057349cc55cSDimitry Andric VMINUD, 1058349cc55cSDimitry Andric VMINUH, 1059349cc55cSDimitry Andric VMINUW, 1060349cc55cSDimitry Andric VMRGEW, 1061349cc55cSDimitry Andric VMRGOW, 1062349cc55cSDimitry Andric VNAND, 1063349cc55cSDimitry Andric VNOR, 1064349cc55cSDimitry Andric VOR, 1065349cc55cSDimitry Andric VORC, 1066349cc55cSDimitry Andric VRLB, 1067349cc55cSDimitry Andric VRLD, 1068349cc55cSDimitry Andric VRLDNM, 1069349cc55cSDimitry Andric VRLH, 1070349cc55cSDimitry Andric VRLW, 1071349cc55cSDimitry Andric VRLWNM, 1072349cc55cSDimitry Andric VSLB, 1073349cc55cSDimitry Andric VSLD, 1074349cc55cSDimitry Andric VSLH, 1075349cc55cSDimitry Andric VSLW, 1076349cc55cSDimitry Andric VSRAB, 1077349cc55cSDimitry Andric VSRAD, 1078349cc55cSDimitry Andric VSRAH, 1079349cc55cSDimitry Andric VSRAW, 1080349cc55cSDimitry Andric VSRB, 1081349cc55cSDimitry Andric VSRD, 1082349cc55cSDimitry Andric VSRH, 1083349cc55cSDimitry Andric VSRW, 1084349cc55cSDimitry Andric VSUBUBM, 1085349cc55cSDimitry Andric VSUBUDM, 1086349cc55cSDimitry Andric VSUBUHM, 1087349cc55cSDimitry Andric VSUBUWM, 108806c3fb27SDimitry Andric VXOR, V_SET0, V_SET0B, V_SET0H, 1089349cc55cSDimitry Andric XOR, XOR8, 1090349cc55cSDimitry Andric XOR8_rec, XOR_rec, 1091349cc55cSDimitry Andric XSCPSGNDP, 1092349cc55cSDimitry Andric XSCPSGNQP, 1093349cc55cSDimitry Andric XSIEXPDP, 1094349cc55cSDimitry Andric XSIEXPQP, 1095349cc55cSDimitry Andric XVCPSGNDP, 1096349cc55cSDimitry Andric XVCPSGNSP, 1097349cc55cSDimitry Andric XVIEXPDP, 1098349cc55cSDimitry Andric XVIEXPSP, 1099349cc55cSDimitry Andric XXLAND, 1100349cc55cSDimitry Andric XXLANDC, 110106c3fb27SDimitry Andric XXLEQV, XXLEQVOnes, 1102349cc55cSDimitry Andric XXLNAND, 1103349cc55cSDimitry Andric XXLNOR, 1104349cc55cSDimitry Andric XXLOR, XXLORf, 110506c3fb27SDimitry Andric XXLORC, 110606c3fb27SDimitry Andric XXLXOR, XXLXORdpz, XXLXORspz, XXLXORz 1107349cc55cSDimitry Andric)>; 1108349cc55cSDimitry Andric 1109349cc55cSDimitry Andric// 3 Cycles ALU operations, 3 input operands 1110349cc55cSDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read, P10FX_Read], 1111349cc55cSDimitry Andric (instrs 1112349cc55cSDimitry Andric ISEL, ISEL8, 1113349cc55cSDimitry Andric VRLDMI, 1114349cc55cSDimitry Andric VRLWMI, 1115349cc55cSDimitry Andric VSEL, 1116349cc55cSDimitry Andric XXSEL 1117349cc55cSDimitry Andric)>; 1118349cc55cSDimitry Andric 1119349cc55cSDimitry Andric// Single crack instructions 1120349cc55cSDimitry Andric// 3 Cycles ALU operations, 0 input operands 1121349cc55cSDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_DISP_ANY], 1122349cc55cSDimitry Andric (instrs 1123349cc55cSDimitry Andric MFFS, 1124349cc55cSDimitry Andric MFFS_rec, 112506c3fb27SDimitry Andric MFFSCDRNI, 112606c3fb27SDimitry Andric MFFSCRNI, 1127349cc55cSDimitry Andric MFFSL, 1128349cc55cSDimitry Andric MFVSCR, 11295f757f3fSDimitry Andric MTFSB0 1130349cc55cSDimitry Andric)>; 1131349cc55cSDimitry Andric 1132349cc55cSDimitry Andric// Single crack instructions 1133349cc55cSDimitry Andric// 3 Cycles ALU operations, 1 input operands 1134349cc55cSDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10FX_Read], 1135349cc55cSDimitry Andric (instrs 113606c3fb27SDimitry Andric ADDIC_rec, 1137349cc55cSDimitry Andric ADDME8_rec, ADDME_rec, 1138349cc55cSDimitry Andric ADDME8O_rec, ADDMEO_rec, 1139349cc55cSDimitry Andric ADDZE8_rec, ADDZE_rec, 1140349cc55cSDimitry Andric ADDZE8O_rec, ADDZEO_rec, 1141349cc55cSDimitry Andric MCRFS, 1142349cc55cSDimitry Andric MFFSCDRN, 1143349cc55cSDimitry Andric MFFSCRN, 1144349cc55cSDimitry Andric MTVSCR, 1145349cc55cSDimitry Andric NEG8O_rec, NEGO_rec, 1146349cc55cSDimitry Andric SUBFME8_rec, SUBFME_rec, 1147349cc55cSDimitry Andric SUBFME8O_rec, SUBFMEO_rec, 1148349cc55cSDimitry Andric SUBFZE8_rec, SUBFZE_rec, 11495f757f3fSDimitry Andric SUBFZE8O_rec, SUBFZEO_rec 1150349cc55cSDimitry Andric)>; 1151349cc55cSDimitry Andric 1152349cc55cSDimitry Andric// Single crack instructions 1153349cc55cSDimitry Andric// 3 Cycles ALU operations, 2 input operands 1154349cc55cSDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10FX_Read, P10FX_Read], 1155349cc55cSDimitry Andric (instrs 1156349cc55cSDimitry Andric ADDE8_rec, ADDE_rec, 1157349cc55cSDimitry Andric ADDE8O_rec, ADDEO_rec, 1158349cc55cSDimitry Andric ADD4O_rec, ADD8O_rec, 1159349cc55cSDimitry Andric SUBFE8_rec, SUBFE_rec, 1160349cc55cSDimitry Andric SUBFE8O_rec, SUBFEO_rec, 1161349cc55cSDimitry Andric SUBF8O_rec, SUBFO_rec 1162349cc55cSDimitry Andric)>; 1163349cc55cSDimitry Andric 1164349cc55cSDimitry Andric// 2-way crack instructions 116506c3fb27SDimitry Andric// 3 Cycles ALU operations, and 4 Cycles ALU2 operations, 2 input operands 116606c3fb27SDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_F2_4C, P10W_DISP_ANY], 116706c3fb27SDimitry Andric (instrs 116806c3fb27SDimitry Andric ADDG6S, ADDG6S8 116906c3fb27SDimitry Andric)>; 117006c3fb27SDimitry Andric 117106c3fb27SDimitry Andric// 2-way crack instructions 1172349cc55cSDimitry Andric// 3 Cycles ALU operations, and 3 Cycles ALU operations, 0 input operands 1173349cc55cSDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 1174349cc55cSDimitry Andric (instrs 1175349cc55cSDimitry Andric HRFID, 1176349cc55cSDimitry Andric MFFSCE, 117706c3fb27SDimitry Andric MTFSB1, 117806c3fb27SDimitry Andric MTFSFI, MTFSFIb, 117906c3fb27SDimitry Andric MTFSFI_rec, 118006c3fb27SDimitry Andric RFEBB, 1181349cc55cSDimitry Andric RFID, 118206c3fb27SDimitry Andric SC, 1183349cc55cSDimitry Andric STOP 1184349cc55cSDimitry Andric)>; 1185349cc55cSDimitry Andric 1186349cc55cSDimitry Andric// 2-way crack instructions 1187349cc55cSDimitry Andric// 3 Cycles ALU operations, and 3 Cycles ALU operations, 1 input operands 1188349cc55cSDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10FX_Read], 1189349cc55cSDimitry Andric (instrs 1190349cc55cSDimitry Andric FABSD_rec, FABSS_rec, 1191349cc55cSDimitry Andric FMR_rec, 1192349cc55cSDimitry Andric FNABSD_rec, FNABSS_rec, 1193349cc55cSDimitry Andric FNEGD_rec, FNEGS_rec, 119406c3fb27SDimitry Andric MTFSF, MTFSFb, 119506c3fb27SDimitry Andric MTFSF_rec 1196349cc55cSDimitry Andric)>; 1197349cc55cSDimitry Andric 1198349cc55cSDimitry Andric// 2-way crack instructions 1199349cc55cSDimitry Andric// 3 Cycles ALU operations, and 3 Cycles ALU operations, 2 input operands 1200349cc55cSDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read], 1201349cc55cSDimitry Andric (instrs 1202349cc55cSDimitry Andric ADDC, ADDC8, 1203349cc55cSDimitry Andric ADDC8_rec, ADDC_rec, 1204349cc55cSDimitry Andric ADDC8O, ADDCO, 1205349cc55cSDimitry Andric FCPSGND_rec, FCPSGNS_rec, 1206349cc55cSDimitry Andric SUBFC, SUBFC8, 1207349cc55cSDimitry Andric SUBFC8_rec, SUBFC_rec, 1208349cc55cSDimitry Andric SUBFC8O, SUBFCO 1209349cc55cSDimitry Andric)>; 1210349cc55cSDimitry Andric 1211349cc55cSDimitry Andric// 4-way crack instructions 1212349cc55cSDimitry Andric// 3 Cycles ALU operations, 3 Cycles ALU operations, 3 Cycles ALU operations, and 3 Cycles ALU operations, 2 input operands 1213349cc55cSDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10W_FX_3C, P10W_DISP_ANY, P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read], 1214349cc55cSDimitry Andric (instrs 1215349cc55cSDimitry Andric ADDC8O_rec, ADDCO_rec, 1216349cc55cSDimitry Andric SUBFC8O_rec, SUBFCO_rec 1217349cc55cSDimitry Andric)>; 1218349cc55cSDimitry Andric 1219349cc55cSDimitry Andric// 2-way crack instructions 1220349cc55cSDimitry Andric// 3 Cycles ALU operations, and 4 Cycles Permute operations, 1 input operands 1221349cc55cSDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_PM_4C, P10W_DISP_ANY], 1222349cc55cSDimitry Andric (instrs 1223349cc55cSDimitry Andric VSTRIBL_rec, 1224349cc55cSDimitry Andric VSTRIBR_rec, 1225349cc55cSDimitry Andric VSTRIHL_rec, 1226349cc55cSDimitry Andric VSTRIHR_rec 1227349cc55cSDimitry Andric)>; 1228349cc55cSDimitry Andric 1229349cc55cSDimitry Andric// 2-way crack instructions 123006c3fb27SDimitry Andric// 3 Cycles ALU operations, and 3 Cycles ALU operations, 1 input operands 123106c3fb27SDimitry Andricdef : InstRW<[P10W_FX_3C, P10W_DISP_PAIR, P10W_FX_3C, P10FX_Read], 1232349cc55cSDimitry Andric (instrs 1233349cc55cSDimitry Andric MTCRF, MTCRF8 1234349cc55cSDimitry Andric)>; 1235349cc55cSDimitry Andric 123606c3fb27SDimitry Andric// 6 Cycles Load operations, 0 input operands 123706c3fb27SDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_ANY], 123806c3fb27SDimitry Andric (instrs 123906c3fb27SDimitry Andric LBZ, LBZ8, 124006c3fb27SDimitry Andric LD, LDtoc, LDtocBA, LDtocCPT, LDtocJTI, LDtocL, SPILLTOVSR_LD, 124106c3fb27SDimitry Andric DFLOADf32, DFLOADf64, LFD, 124206c3fb27SDimitry Andric LHA, LHA8, 124306c3fb27SDimitry Andric LHZ, LHZ8, 124406c3fb27SDimitry Andric LWA, LWA_32, 124506c3fb27SDimitry Andric LWZ, LWZ8, LWZtoc, LWZtocL, 124606c3fb27SDimitry Andric LXSD, 124706c3fb27SDimitry Andric LXV 124806c3fb27SDimitry Andric)>; 124906c3fb27SDimitry Andric 1250349cc55cSDimitry Andric// 6 Cycles Load operations, 1 input operands 1251349cc55cSDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_ANY, P10LD_Read], 1252349cc55cSDimitry Andric (instrs 125306c3fb27SDimitry Andric LXVL, 125406c3fb27SDimitry Andric LXVLL 125506c3fb27SDimitry Andric)>; 125606c3fb27SDimitry Andric 125706c3fb27SDimitry Andric// 6 Cycles Load operations, 2 input operands 125806c3fb27SDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_ANY, P10LD_Read, P10LD_Read], 125906c3fb27SDimitry Andric (instrs 126006c3fb27SDimitry Andric DCBT, 126106c3fb27SDimitry Andric DCBTST, 126206c3fb27SDimitry Andric ICBT, 126306c3fb27SDimitry Andric LBZX, LBZX8, LBZXTLS, LBZXTLS_, LBZXTLS_32, 1264349cc55cSDimitry Andric LDBRX, 126506c3fb27SDimitry Andric LDX, LDXTLS, LDXTLS_, SPILLTOVSR_LDX, 126606c3fb27SDimitry Andric LFDX, LFDXTLS, LFDXTLS_, XFLOADf32, XFLOADf64, 1267349cc55cSDimitry Andric LFIWAX, LIWAX, 1268349cc55cSDimitry Andric LFIWZX, LIWZX, 126906c3fb27SDimitry Andric LHAX, LHAX8, LHAXTLS, LHAXTLS_, LHAXTLS_32, 1270349cc55cSDimitry Andric LHBRX, LHBRX8, 127106c3fb27SDimitry Andric LHZX, LHZX8, LHZXTLS, LHZXTLS_, LHZXTLS_32, 1272349cc55cSDimitry Andric LVEBX, 1273349cc55cSDimitry Andric LVEHX, 1274349cc55cSDimitry Andric LVEWX, 1275349cc55cSDimitry Andric LVX, 1276349cc55cSDimitry Andric LVXL, 127706c3fb27SDimitry Andric LWAX, LWAXTLS, LWAXTLS_, LWAXTLS_32, LWAX_32, 1278349cc55cSDimitry Andric LWBRX, LWBRX8, 127906c3fb27SDimitry Andric LWZX, LWZX8, LWZXTLS, LWZXTLS_, LWZXTLS_32, 1280349cc55cSDimitry Andric LXSDX, 1281349cc55cSDimitry Andric LXSIBZX, 1282349cc55cSDimitry Andric LXSIHZX, 1283349cc55cSDimitry Andric LXSIWAX, 1284349cc55cSDimitry Andric LXSIWZX, 1285349cc55cSDimitry Andric LXVB16X, 1286349cc55cSDimitry Andric LXVD2X, 1287349cc55cSDimitry Andric LXVDSX, 1288349cc55cSDimitry Andric LXVH8X, 1289349cc55cSDimitry Andric LXVRBX, 1290349cc55cSDimitry Andric LXVRDX, 1291349cc55cSDimitry Andric LXVRHX, 1292349cc55cSDimitry Andric LXVRWX, 1293349cc55cSDimitry Andric LXVW4X, 1294349cc55cSDimitry Andric LXVWSX, 1295349cc55cSDimitry Andric LXVX 1296349cc55cSDimitry Andric)>; 1297349cc55cSDimitry Andric 1298349cc55cSDimitry Andric// 2-way crack instructions 129906c3fb27SDimitry Andric// 6 Cycles Load operations, and 13 Cycles Decimal Floating Point operations, 1 input operands 1300349cc55cSDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_DF_13C, P10W_DISP_ANY], 1301349cc55cSDimitry Andric (instrs 130204eeddc0SDimitry Andric HASHCHK, HASHCHK8, 130304eeddc0SDimitry Andric HASHCHKP, HASHCHKP8 1304349cc55cSDimitry Andric)>; 1305349cc55cSDimitry Andric 1306349cc55cSDimitry Andric// Single crack instructions 1307349cc55cSDimitry Andric// 6 Cycles Load operations, 0 input operands 1308349cc55cSDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_DISP_ANY], 1309349cc55cSDimitry Andric (instrs 131006c3fb27SDimitry Andric DARN, 1311349cc55cSDimitry Andric SLBIA 1312349cc55cSDimitry Andric)>; 1313349cc55cSDimitry Andric 1314349cc55cSDimitry Andric// Single crack instructions 1315349cc55cSDimitry Andric// 6 Cycles Load operations, 1 input operands 1316349cc55cSDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_DISP_ANY, P10LD_Read], 1317349cc55cSDimitry Andric (instrs 131806c3fb27SDimitry Andric MTSPR, MTSPR8, MTSR, MTUDSCR, MTVRSAVE, MTVRSAVEv, 1319349cc55cSDimitry Andric SLBFEE_rec, 1320349cc55cSDimitry Andric SLBIE, 1321349cc55cSDimitry Andric SLBMFEE, 1322349cc55cSDimitry Andric SLBMFEV 1323349cc55cSDimitry Andric)>; 1324349cc55cSDimitry Andric 1325349cc55cSDimitry Andric// Single crack instructions 1326349cc55cSDimitry Andric// 6 Cycles Load operations, 2 input operands 1327349cc55cSDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_DISP_ANY, P10LD_Read, P10LD_Read], 1328349cc55cSDimitry Andric (instrs 132906c3fb27SDimitry Andric LBARX, LBARXL, 1330349cc55cSDimitry Andric LBZCIX, 133106c3fb27SDimitry Andric LDARX, LDARXL, 1332349cc55cSDimitry Andric LDCIX, 133306c3fb27SDimitry Andric LHARX, LHARXL, 1334349cc55cSDimitry Andric LHZCIX, 133506c3fb27SDimitry Andric LWARX, LWARXL, 133606c3fb27SDimitry Andric LWZCIX 133706c3fb27SDimitry Andric)>; 133806c3fb27SDimitry Andric 133906c3fb27SDimitry Andric// Expand instructions 134006c3fb27SDimitry Andric// 6 Cycles Load operations, 6 Cycles Load operations, 6 Cycles Load operations, and 6 Cycles Load operations, 0 input operands 134106c3fb27SDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_LD_6C, P10W_DISP_ANY, P10W_LD_6C, P10W_DISP_ANY, P10W_LD_6C, P10W_DISP_ANY], 134206c3fb27SDimitry Andric (instrs 134306c3fb27SDimitry Andric LMW 1344349cc55cSDimitry Andric)>; 1345349cc55cSDimitry Andric 1346349cc55cSDimitry Andric// Expand instructions 1347349cc55cSDimitry Andric// 6 Cycles Load operations, 6 Cycles Load operations, 6 Cycles Load operations, and 6 Cycles Load operations, 1 input operands 1348349cc55cSDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_LD_6C, P10W_DISP_ANY, P10W_LD_6C, P10W_DISP_ANY, P10W_LD_6C, P10W_DISP_ANY, P10LD_Read], 1349349cc55cSDimitry Andric (instrs 1350349cc55cSDimitry Andric LSWI 1351349cc55cSDimitry Andric)>; 1352349cc55cSDimitry Andric 1353349cc55cSDimitry Andric// 2-way crack instructions 135406c3fb27SDimitry Andric// 6 Cycles Load operations, and 3 Cycles Simple Fixed-point (SFX) operations, 0 input operands 1355349cc55cSDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_SX_3C, P10W_DISP_ANY], 1356349cc55cSDimitry Andric (instrs 1357349cc55cSDimitry Andric LBZU, LBZU8, 1358349cc55cSDimitry Andric LDU, 1359349cc55cSDimitry Andric LFDU, 1360349cc55cSDimitry Andric LHAU, LHAU8, 1361349cc55cSDimitry Andric LHZU, LHZU8, 136206c3fb27SDimitry Andric LWZU, LWZU8 136306c3fb27SDimitry Andric)>; 136406c3fb27SDimitry Andric 136506c3fb27SDimitry Andric// 2-way crack instructions 136606c3fb27SDimitry Andric// 6 Cycles Load operations, and 3 Cycles Simple Fixed-point (SFX) operations, 2 input operands 136706c3fb27SDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_SX_3C, P10W_DISP_ANY], 136806c3fb27SDimitry Andric (instrs 136906c3fb27SDimitry Andric LBZUX, LBZUX8, 137006c3fb27SDimitry Andric LDUX, 137106c3fb27SDimitry Andric LFDUX, 137206c3fb27SDimitry Andric LHAUX, LHAUX8, 1373349cc55cSDimitry Andric LHZUX, LHZUX8, 1374349cc55cSDimitry Andric LWAUX, 1375349cc55cSDimitry Andric LWZUX, LWZUX8 1376349cc55cSDimitry Andric)>; 1377349cc55cSDimitry Andric 137806c3fb27SDimitry Andric// 6 Cycles Load operations, 0 input operands 137906c3fb27SDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_PAIR], 1380349cc55cSDimitry Andric (instrs 1381349cc55cSDimitry Andric PLBZ, PLBZ8, PLBZ8pc, PLBZpc, 1382349cc55cSDimitry Andric PLD, PLDpc, 1383349cc55cSDimitry Andric PLFD, PLFDpc, 1384349cc55cSDimitry Andric PLFS, PLFSpc, 1385349cc55cSDimitry Andric PLHA, PLHA8, PLHA8pc, PLHApc, 1386349cc55cSDimitry Andric PLHZ, PLHZ8, PLHZ8pc, PLHZpc, 1387349cc55cSDimitry Andric PLWA, PLWA8, PLWA8pc, PLWApc, 1388349cc55cSDimitry Andric PLWZ, PLWZ8, PLWZ8pc, PLWZpc, 1389349cc55cSDimitry Andric PLXSD, PLXSDpc, 1390349cc55cSDimitry Andric PLXSSP, PLXSSPpc, 1391349cc55cSDimitry Andric PLXV, PLXVpc, 1392349cc55cSDimitry Andric PLXVP, PLXVPpc 1393349cc55cSDimitry Andric)>; 1394349cc55cSDimitry Andric 1395349cc55cSDimitry Andric// 2-way crack instructions 139606c3fb27SDimitry Andric// 6 Cycles Load operations, and 4 Cycles ALU2 operations, 0 input operands 1397349cc55cSDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_F2_4C], 1398349cc55cSDimitry Andric (instrs 1399349cc55cSDimitry Andric LFS, 140006c3fb27SDimitry Andric LXSSP 140106c3fb27SDimitry Andric)>; 140206c3fb27SDimitry Andric 140306c3fb27SDimitry Andric// 2-way crack instructions 140406c3fb27SDimitry Andric// 6 Cycles Load operations, and 4 Cycles ALU2 operations, 2 input operands 140506c3fb27SDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_F2_4C], 140606c3fb27SDimitry Andric (instrs 140706c3fb27SDimitry Andric LFSX, LFSXTLS, LFSXTLS_, 1408349cc55cSDimitry Andric LXSSPX 1409349cc55cSDimitry Andric)>; 1410349cc55cSDimitry Andric 1411349cc55cSDimitry Andric// 4-way crack instructions 141206c3fb27SDimitry Andric// 6 Cycles Load operations, 4 Cycles ALU2 operations, 3 Cycles Simple Fixed-point (SFX) operations, and 3 Cycles ALU operations, 0 input operands 1413349cc55cSDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_F2_4C, P10W_SX_3C, P10W_DISP_ANY, P10W_FX_3C, P10W_DISP_ANY], 1414349cc55cSDimitry Andric (instrs 141506c3fb27SDimitry Andric LFSU 141606c3fb27SDimitry Andric)>; 141706c3fb27SDimitry Andric 141806c3fb27SDimitry Andric// 4-way crack instructions 141906c3fb27SDimitry Andric// 6 Cycles Load operations, 4 Cycles ALU2 operations, 3 Cycles Simple Fixed-point (SFX) operations, and 3 Cycles ALU operations, 2 input operands 142006c3fb27SDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_F2_4C, P10W_SX_3C, P10W_DISP_ANY, P10W_FX_3C, P10W_DISP_ANY], 142106c3fb27SDimitry Andric (instrs 1422349cc55cSDimitry Andric LFSUX 1423349cc55cSDimitry Andric)>; 1424349cc55cSDimitry Andric 1425349cc55cSDimitry Andric// 2-way crack instructions 1426349cc55cSDimitry Andric// 6 Cycles Load operations, and 6 Cycles Load operations, 1 input operands 1427349cc55cSDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_LD_6C, P10W_DISP_PAIR, P10LD_Read], 1428349cc55cSDimitry Andric (instrs 1429349cc55cSDimitry Andric TLBIEL 1430349cc55cSDimitry Andric)>; 1431349cc55cSDimitry Andric 1432349cc55cSDimitry Andric// 2-way crack instructions 1433349cc55cSDimitry Andric// 6 Cycles Load operations, and 6 Cycles Load operations, 2 input operands 1434349cc55cSDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_LD_6C, P10W_DISP_PAIR, P10LD_Read, P10LD_Read], 1435349cc55cSDimitry Andric (instrs 1436349cc55cSDimitry Andric SLBMTE 1437349cc55cSDimitry Andric)>; 1438349cc55cSDimitry Andric 1439349cc55cSDimitry Andric// 2-way crack instructions 144006c3fb27SDimitry Andric// 6 Cycles Load operations, and 3 Cycles Simple Fixed-point (SFX) operations, 0 input operands 1441349cc55cSDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_SX_3C], 1442349cc55cSDimitry Andric (instrs 144306c3fb27SDimitry Andric LXVP 144406c3fb27SDimitry Andric)>; 144506c3fb27SDimitry Andric 144606c3fb27SDimitry Andric// 2-way crack instructions 144706c3fb27SDimitry Andric// 6 Cycles Load operations, and 3 Cycles Simple Fixed-point (SFX) operations, 2 input operands 144806c3fb27SDimitry Andricdef : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_SX_3C], 144906c3fb27SDimitry Andric (instrs 1450349cc55cSDimitry Andric LXVPX 1451349cc55cSDimitry Andric)>; 1452349cc55cSDimitry Andric 1453349cc55cSDimitry Andric// Single crack instructions 1454349cc55cSDimitry Andric// 13 Cycles Unknown operations, 1 input operands 1455349cc55cSDimitry Andricdef : InstRW<[P10W_MFL_13C, P10W_DISP_EVEN, P10W_DISP_ANY], 1456349cc55cSDimitry Andric (instrs 145781ad6265SDimitry Andric MFSPR, MFSPR8, MFSR, MFTB8, MFUDSCR, MFVRSAVE, MFVRSAVEv 1458349cc55cSDimitry Andric)>; 1459349cc55cSDimitry Andric 1460349cc55cSDimitry Andric// 10 Cycles SIMD Matrix Multiply Engine operations, 0 input operands 1461349cc55cSDimitry Andricdef : InstRW<[P10W_MM_10C, P10W_DISP_ANY], 1462349cc55cSDimitry Andric (instrs 1463349cc55cSDimitry Andric XXSETACCZ 1464349cc55cSDimitry Andric)>; 1465349cc55cSDimitry Andric 1466349cc55cSDimitry Andric// 10 Cycles SIMD Matrix Multiply Engine operations, 2 input operands 1467349cc55cSDimitry Andricdef : InstRW<[P10W_MM_10C, P10W_DISP_ANY, P10MM_Read, P10MM_Read], 1468349cc55cSDimitry Andric (instrs 1469349cc55cSDimitry Andric XVBF16GER2, 1470349cc55cSDimitry Andric XVF16GER2, 1471349cc55cSDimitry Andric XVF32GER, 1472349cc55cSDimitry Andric XVF64GER, 1473349cc55cSDimitry Andric XVI16GER2, 1474349cc55cSDimitry Andric XVI16GER2S, 1475349cc55cSDimitry Andric XVI4GER8, 1476349cc55cSDimitry Andric XVI8GER4 1477349cc55cSDimitry Andric)>; 1478349cc55cSDimitry Andric 1479349cc55cSDimitry Andric// 10 Cycles SIMD Matrix Multiply Engine operations, 3 input operands 1480349cc55cSDimitry Andricdef : InstRW<[P10W_MM_10C, P10W_DISP_ANY, P10MM_Read, P10MM_Read, P10MM_Read], 1481349cc55cSDimitry Andric (instrs 1482349cc55cSDimitry Andric XVBF16GER2NN, 1483349cc55cSDimitry Andric XVBF16GER2NP, 1484349cc55cSDimitry Andric XVBF16GER2PN, 1485349cc55cSDimitry Andric XVBF16GER2PP, 1486349cc55cSDimitry Andric XVF16GER2NN, 1487349cc55cSDimitry Andric XVF16GER2NP, 1488349cc55cSDimitry Andric XVF16GER2PN, 1489349cc55cSDimitry Andric XVF16GER2PP, 1490349cc55cSDimitry Andric XVF32GERNN, 1491349cc55cSDimitry Andric XVF32GERNP, 1492349cc55cSDimitry Andric XVF32GERPN, 1493349cc55cSDimitry Andric XVF32GERPP, 1494349cc55cSDimitry Andric XVF64GERNN, 1495349cc55cSDimitry Andric XVF64GERNP, 1496349cc55cSDimitry Andric XVF64GERPN, 1497349cc55cSDimitry Andric XVF64GERPP, 1498349cc55cSDimitry Andric XVI16GER2PP, 1499349cc55cSDimitry Andric XVI16GER2SPP, 1500349cc55cSDimitry Andric XVI4GER8PP, 1501349cc55cSDimitry Andric XVI8GER4PP, 1502349cc55cSDimitry Andric XVI8GER4SPP 1503349cc55cSDimitry Andric)>; 1504349cc55cSDimitry Andric 150506c3fb27SDimitry Andric// 10 Cycles SIMD Matrix Multiply Engine operations, 2 input operands 150606c3fb27SDimitry Andricdef : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10MM_Read, P10MM_Read], 1507349cc55cSDimitry Andric (instrs 1508349cc55cSDimitry Andric PMXVBF16GER2, 1509349cc55cSDimitry Andric PMXVF16GER2, 151006c3fb27SDimitry Andric PMXVF32GER, 151106c3fb27SDimitry Andric PMXVF64GER, 1512349cc55cSDimitry Andric PMXVI16GER2, 1513349cc55cSDimitry Andric PMXVI16GER2S, 1514349cc55cSDimitry Andric PMXVI4GER8, 1515349cc55cSDimitry Andric PMXVI8GER4 1516349cc55cSDimitry Andric)>; 1517349cc55cSDimitry Andric 151806c3fb27SDimitry Andric// 10 Cycles SIMD Matrix Multiply Engine operations, 3 input operands 151906c3fb27SDimitry Andricdef : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10MM_Read, P10MM_Read, P10MM_Read], 1520349cc55cSDimitry Andric (instrs 1521349cc55cSDimitry Andric PMXVBF16GER2NN, 1522349cc55cSDimitry Andric PMXVBF16GER2NP, 1523349cc55cSDimitry Andric PMXVBF16GER2PN, 1524349cc55cSDimitry Andric PMXVBF16GER2PP, 1525349cc55cSDimitry Andric PMXVF16GER2NN, 1526349cc55cSDimitry Andric PMXVF16GER2NP, 1527349cc55cSDimitry Andric PMXVF16GER2PN, 1528349cc55cSDimitry Andric PMXVF16GER2PP, 152906c3fb27SDimitry Andric PMXVF32GERNN, 153006c3fb27SDimitry Andric PMXVF32GERNP, 153106c3fb27SDimitry Andric PMXVF32GERPN, 153206c3fb27SDimitry Andric PMXVF32GERPP, 153306c3fb27SDimitry Andric PMXVF64GERNN, 153406c3fb27SDimitry Andric PMXVF64GERNP, 153506c3fb27SDimitry Andric PMXVF64GERPN, 153606c3fb27SDimitry Andric PMXVF64GERPP, 1537349cc55cSDimitry Andric PMXVI16GER2PP, 1538349cc55cSDimitry Andric PMXVI16GER2SPP, 1539349cc55cSDimitry Andric PMXVI4GER8PP, 1540349cc55cSDimitry Andric PMXVI8GER4PP, 1541349cc55cSDimitry Andric PMXVI8GER4SPP 1542349cc55cSDimitry Andric)>; 1543349cc55cSDimitry Andric 1544349cc55cSDimitry Andric// 2-way crack instructions 1545349cc55cSDimitry Andric// 10 Cycles SIMD Matrix Multiply Engine operations, and 3 Cycles ALU operations, 1 input operands 1546349cc55cSDimitry Andricdef : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10W_FX_3C], 1547349cc55cSDimitry Andric (instrs 1548349cc55cSDimitry Andric XXMTACC 1549349cc55cSDimitry Andric)>; 1550349cc55cSDimitry Andric 1551349cc55cSDimitry Andric// 4-way crack instructions 1552349cc55cSDimitry Andric// 10 Cycles SIMD Matrix Multiply Engine operations, 3 Cycles ALU operations, 10 Cycles SIMD Matrix Multiply Engine operations, and 3 Cycles ALU operations, 1 input operands 1553349cc55cSDimitry Andricdef : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10W_FX_3C, P10W_MM_10C, P10W_DISP_PAIR, P10W_FX_3C], 1554349cc55cSDimitry Andric (instrs 1555349cc55cSDimitry Andric XXMFACC 1556349cc55cSDimitry Andric)>; 1557349cc55cSDimitry Andric 155806c3fb27SDimitry Andric// 5 Cycles GPR Multiply operations, 1 input operands 155906c3fb27SDimitry Andricdef : InstRW<[P10W_MU_5C, P10W_DISP_ANY, P10MU_Read], 156006c3fb27SDimitry Andric (instrs 156106c3fb27SDimitry Andric MULLI, MULLI8 156206c3fb27SDimitry Andric)>; 156306c3fb27SDimitry Andric 1564349cc55cSDimitry Andric// 5 Cycles GPR Multiply operations, 2 input operands 1565349cc55cSDimitry Andricdef : InstRW<[P10W_MU_5C, P10W_DISP_ANY, P10MU_Read, P10MU_Read], 1566349cc55cSDimitry Andric (instrs 1567349cc55cSDimitry Andric MULHD, 1568349cc55cSDimitry Andric MULHDU, 1569349cc55cSDimitry Andric MULHW, 1570349cc55cSDimitry Andric MULHWU, 1571349cc55cSDimitry Andric MULLD, 1572349cc55cSDimitry Andric MULLDO, 1573349cc55cSDimitry Andric MULLW, 1574349cc55cSDimitry Andric MULLWO, 1575349cc55cSDimitry Andric VMULHSD, 1576349cc55cSDimitry Andric VMULHUD, 1577349cc55cSDimitry Andric VMULLD 1578349cc55cSDimitry Andric)>; 1579349cc55cSDimitry Andric 1580349cc55cSDimitry Andric// 5 Cycles GPR Multiply operations, 3 input operands 1581349cc55cSDimitry Andricdef : InstRW<[P10W_MU_5C, P10W_DISP_ANY, P10MU_Read, P10MU_Read, P10MU_Read], 1582349cc55cSDimitry Andric (instrs 1583349cc55cSDimitry Andric MADDHD, 1584349cc55cSDimitry Andric MADDHDU, 1585349cc55cSDimitry Andric MADDLD, MADDLD8 1586349cc55cSDimitry Andric)>; 1587349cc55cSDimitry Andric 1588349cc55cSDimitry Andric// 2-way crack instructions 1589349cc55cSDimitry Andric// 5 Cycles GPR Multiply operations, and 3 Cycles ALU operations, 2 input operands 1590349cc55cSDimitry Andricdef : InstRW<[P10W_MU_5C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 1591349cc55cSDimitry Andric (instrs 1592349cc55cSDimitry Andric MULHD_rec, 1593349cc55cSDimitry Andric MULHDU_rec, 1594349cc55cSDimitry Andric MULHW_rec, 1595349cc55cSDimitry Andric MULHWU_rec, 1596349cc55cSDimitry Andric MULLD_rec, 1597349cc55cSDimitry Andric MULLDO_rec, 1598349cc55cSDimitry Andric MULLW_rec, 1599349cc55cSDimitry Andric MULLWO_rec 1600349cc55cSDimitry Andric)>; 1601349cc55cSDimitry Andric 1602349cc55cSDimitry Andric// 4 Cycles Permute operations, 0 input operands 1603349cc55cSDimitry Andricdef : InstRW<[P10W_PM_4C, P10W_DISP_ANY], 1604349cc55cSDimitry Andric (instrs 160506c3fb27SDimitry Andric LXVKQ, 160606c3fb27SDimitry Andric VSPLTISB, 160706c3fb27SDimitry Andric VSPLTISH, 160806c3fb27SDimitry Andric VSPLTISW, V_SETALLONES, V_SETALLONESB, V_SETALLONESH, 160906c3fb27SDimitry Andric XXSPLTIB 1610349cc55cSDimitry Andric)>; 1611349cc55cSDimitry Andric 1612349cc55cSDimitry Andric// 4 Cycles Permute operations, 1 input operands 1613349cc55cSDimitry Andricdef : InstRW<[P10W_PM_4C, P10W_DISP_ANY, P10PM_Read], 1614349cc55cSDimitry Andric (instrs 1615bdd1243dSDimitry Andric BRD, 1616bdd1243dSDimitry Andric BRH, BRH8, 1617bdd1243dSDimitry Andric BRW, BRW8, 1618349cc55cSDimitry Andric MFVSRLD, 1619349cc55cSDimitry Andric MTVSRWS, 1620349cc55cSDimitry Andric VCLZLSBB, 1621349cc55cSDimitry Andric VCTZLSBB, 162206c3fb27SDimitry Andric VEXTRACTD, 162306c3fb27SDimitry Andric VEXTRACTUB, 162406c3fb27SDimitry Andric VEXTRACTUH, 162506c3fb27SDimitry Andric VEXTRACTUW, 1626349cc55cSDimitry Andric VGBBD, 162706c3fb27SDimitry Andric VINSERTD, 162806c3fb27SDimitry Andric VINSERTW, 1629349cc55cSDimitry Andric VPRTYBQ, 163006c3fb27SDimitry Andric VSPLTB, VSPLTBs, 163106c3fb27SDimitry Andric VSPLTH, VSPLTHs, 163206c3fb27SDimitry Andric VSPLTW, 1633349cc55cSDimitry Andric VSTRIBL, 1634349cc55cSDimitry Andric VSTRIBR, 1635349cc55cSDimitry Andric VSTRIHL, 1636349cc55cSDimitry Andric VSTRIHR, 1637349cc55cSDimitry Andric VUPKHPX, 1638349cc55cSDimitry Andric VUPKHSB, 1639349cc55cSDimitry Andric VUPKHSH, 1640349cc55cSDimitry Andric VUPKHSW, 1641349cc55cSDimitry Andric VUPKLPX, 1642349cc55cSDimitry Andric VUPKLSB, 1643349cc55cSDimitry Andric VUPKLSH, 1644349cc55cSDimitry Andric VUPKLSW, 1645349cc55cSDimitry Andric XVCVBF16SPN, 1646349cc55cSDimitry Andric XXBRD, 1647349cc55cSDimitry Andric XXBRH, 1648349cc55cSDimitry Andric XXBRQ, 1649349cc55cSDimitry Andric XXBRW, 165006c3fb27SDimitry Andric XXEXTRACTUW, 165106c3fb27SDimitry Andric XXGENPCVDM, 165206c3fb27SDimitry Andric XXGENPCVHM, 165306c3fb27SDimitry Andric XXGENPCVWM, 165406c3fb27SDimitry Andric XXSPLTW, XXSPLTWs 1655349cc55cSDimitry Andric)>; 1656349cc55cSDimitry Andric 1657349cc55cSDimitry Andric// 4 Cycles Permute operations, 2 input operands 1658349cc55cSDimitry Andricdef : InstRW<[P10W_PM_4C, P10W_DISP_ANY, P10PM_Read, P10PM_Read], 1659349cc55cSDimitry Andric (instrs 1660349cc55cSDimitry Andric BPERMD, 166106c3fb27SDimitry Andric LVSL, 166206c3fb27SDimitry Andric LVSR, 1663349cc55cSDimitry Andric MTVSRDD, 1664349cc55cSDimitry Andric VBPERMD, 1665349cc55cSDimitry Andric VBPERMQ, 1666349cc55cSDimitry Andric VCLRLB, 1667349cc55cSDimitry Andric VCLRRB, 1668349cc55cSDimitry Andric VEXTUBLX, 1669349cc55cSDimitry Andric VEXTUBRX, 1670349cc55cSDimitry Andric VEXTUHLX, 1671349cc55cSDimitry Andric VEXTUHRX, 1672349cc55cSDimitry Andric VEXTUWLX, 1673349cc55cSDimitry Andric VEXTUWRX, 167406c3fb27SDimitry Andric VINSD, 167506c3fb27SDimitry Andric VINSERTB, 167606c3fb27SDimitry Andric VINSERTH, 167706c3fb27SDimitry Andric VINSW, 1678349cc55cSDimitry Andric VMRGHB, 1679349cc55cSDimitry Andric VMRGHH, 1680349cc55cSDimitry Andric VMRGHW, 1681349cc55cSDimitry Andric VMRGLB, 1682349cc55cSDimitry Andric VMRGLH, 1683349cc55cSDimitry Andric VMRGLW, 1684349cc55cSDimitry Andric VPKPX, 1685349cc55cSDimitry Andric VPKSDSS, 1686349cc55cSDimitry Andric VPKSDUS, 1687349cc55cSDimitry Andric VPKSHSS, 1688349cc55cSDimitry Andric VPKSHUS, 1689349cc55cSDimitry Andric VPKSWSS, 1690349cc55cSDimitry Andric VPKSWUS, 1691349cc55cSDimitry Andric VPKUDUM, 1692349cc55cSDimitry Andric VPKUDUS, 1693349cc55cSDimitry Andric VPKUHUM, 1694349cc55cSDimitry Andric VPKUHUS, 1695349cc55cSDimitry Andric VPKUWUM, 1696349cc55cSDimitry Andric VPKUWUS, 1697349cc55cSDimitry Andric VSL, 169806c3fb27SDimitry Andric VSLDBI, 169906c3fb27SDimitry Andric VSLDOI, 1700349cc55cSDimitry Andric VSLO, 1701349cc55cSDimitry Andric VSLV, 1702349cc55cSDimitry Andric VSR, 170306c3fb27SDimitry Andric VSRDBI, 1704349cc55cSDimitry Andric VSRO, 1705349cc55cSDimitry Andric VSRV, 170606c3fb27SDimitry Andric XXINSERTW, 1707349cc55cSDimitry Andric XXMRGHW, 1708349cc55cSDimitry Andric XXMRGLW, 1709349cc55cSDimitry Andric XXPERMDI, XXPERMDIs, 171006c3fb27SDimitry Andric XXSLDWI, XXSLDWIs 1711349cc55cSDimitry Andric)>; 1712349cc55cSDimitry Andric 1713349cc55cSDimitry Andric// 4 Cycles Permute operations, 3 input operands 1714349cc55cSDimitry Andricdef : InstRW<[P10W_PM_4C, P10W_DISP_ANY, P10PM_Read, P10PM_Read, P10PM_Read], 1715349cc55cSDimitry Andric (instrs 1716349cc55cSDimitry Andric VEXTDDVLX, 1717349cc55cSDimitry Andric VEXTDDVRX, 1718349cc55cSDimitry Andric VEXTDUBVLX, 1719349cc55cSDimitry Andric VEXTDUBVRX, 1720349cc55cSDimitry Andric VEXTDUHVLX, 1721349cc55cSDimitry Andric VEXTDUHVRX, 1722349cc55cSDimitry Andric VEXTDUWVLX, 1723349cc55cSDimitry Andric VEXTDUWVRX, 1724349cc55cSDimitry Andric VINSBLX, 1725349cc55cSDimitry Andric VINSBRX, 1726349cc55cSDimitry Andric VINSBVLX, 1727349cc55cSDimitry Andric VINSBVRX, 1728349cc55cSDimitry Andric VINSDLX, 1729349cc55cSDimitry Andric VINSDRX, 1730349cc55cSDimitry Andric VINSHLX, 1731349cc55cSDimitry Andric VINSHRX, 1732349cc55cSDimitry Andric VINSHVLX, 1733349cc55cSDimitry Andric VINSHVRX, 1734349cc55cSDimitry Andric VINSWLX, 1735349cc55cSDimitry Andric VINSWRX, 1736349cc55cSDimitry Andric VINSWVLX, 1737349cc55cSDimitry Andric VINSWVRX, 1738349cc55cSDimitry Andric VPERM, 1739349cc55cSDimitry Andric VPERMR, 1740349cc55cSDimitry Andric VPERMXOR, 1741bdd1243dSDimitry Andric XXPERM, 1742bdd1243dSDimitry Andric XXPERMR 1743349cc55cSDimitry Andric)>; 1744349cc55cSDimitry Andric 1745349cc55cSDimitry Andric// 2-way crack instructions 1746349cc55cSDimitry Andric// 4 Cycles Permute operations, and 7 Cycles VMX Multiply operations, 2 input operands 1747349cc55cSDimitry Andricdef : InstRW<[P10W_PM_4C, P10W_DISP_EVEN, P10W_vMU_7C, P10W_DISP_ANY], 1748349cc55cSDimitry Andric (instrs 1749349cc55cSDimitry Andric VSUMSWS 1750349cc55cSDimitry Andric)>; 1751349cc55cSDimitry Andric 175206c3fb27SDimitry Andric// 4 Cycles Permute operations, 0 input operands 175306c3fb27SDimitry Andricdef : InstRW<[P10W_PM_4C, P10W_DISP_PAIR], 1754349cc55cSDimitry Andric (instrs 1755349cc55cSDimitry Andric XXSPLTIDP, 1756349cc55cSDimitry Andric XXSPLTIW 1757349cc55cSDimitry Andric)>; 1758349cc55cSDimitry Andric 175906c3fb27SDimitry Andric// 4 Cycles Permute operations, 1 input operands 176006c3fb27SDimitry Andricdef : InstRW<[P10W_PM_4C, P10W_DISP_PAIR, P10PM_Read], 176106c3fb27SDimitry Andric (instrs 176206c3fb27SDimitry Andric XXSPLTI32DX 176306c3fb27SDimitry Andric)>; 176406c3fb27SDimitry Andric 1765349cc55cSDimitry Andric// 4 Cycles Permute operations, 3 input operands 1766349cc55cSDimitry Andricdef : InstRW<[P10W_PM_4C, P10W_DISP_PAIR, P10PM_Read, P10PM_Read, P10PM_Read], 1767349cc55cSDimitry Andric (instrs 1768349cc55cSDimitry Andric XXBLENDVB, 1769349cc55cSDimitry Andric XXBLENDVD, 1770349cc55cSDimitry Andric XXBLENDVH, 1771349cc55cSDimitry Andric XXBLENDVW, 1772349cc55cSDimitry Andric XXEVAL, 1773349cc55cSDimitry Andric XXPERMX 1774349cc55cSDimitry Andric)>; 1775349cc55cSDimitry Andric 1776349cc55cSDimitry Andric// 3 Cycles Store operations, 1 input operands 1777349cc55cSDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_ANY, P10ST_Read], 1778349cc55cSDimitry Andric (instrs 177906c3fb27SDimitry Andric PSTXVP, PSTXVPpc, 178006c3fb27SDimitry Andric STB, STB8, 178106c3fb27SDimitry Andric STBU, STBU8, 178206c3fb27SDimitry Andric SPILLTOVSR_ST, STD, 178306c3fb27SDimitry Andric STDU, 178406c3fb27SDimitry Andric DFSTOREf32, DFSTOREf64, STFD, 178506c3fb27SDimitry Andric STFDU, 178606c3fb27SDimitry Andric STFS, 178706c3fb27SDimitry Andric STFSU, 178806c3fb27SDimitry Andric STH, STH8, 178906c3fb27SDimitry Andric STHU, STHU8, 179006c3fb27SDimitry Andric STW, STW8, 179106c3fb27SDimitry Andric STWU, STWU8, 179206c3fb27SDimitry Andric STXSD, 179306c3fb27SDimitry Andric STXSSP, 179406c3fb27SDimitry Andric STXV 1795349cc55cSDimitry Andric)>; 1796349cc55cSDimitry Andric 1797349cc55cSDimitry Andric// 3 Cycles Store operations, 2 input operands 1798349cc55cSDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_ANY, P10ST_Read, P10ST_Read], 1799349cc55cSDimitry Andric (instrs 180006c3fb27SDimitry Andric CP_COPY, CP_COPY8, 1801349cc55cSDimitry Andric DCBF, 180206c3fb27SDimitry Andric DCBST, 180306c3fb27SDimitry Andric DCBZ, 180406c3fb27SDimitry Andric ICBI, 180506c3fb27SDimitry Andric STXVL, 180606c3fb27SDimitry Andric STXVLL 180706c3fb27SDimitry Andric)>; 180806c3fb27SDimitry Andric 180906c3fb27SDimitry Andric// 3 Cycles Store operations, 3 input operands 181006c3fb27SDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_ANY, P10ST_Read, P10ST_Read, P10ST_Read], 181106c3fb27SDimitry Andric (instrs 1812349cc55cSDimitry Andric STBUX, STBUX8, 181306c3fb27SDimitry Andric STBX, STBX8, STBXTLS, STBXTLS_, STBXTLS_32, 1814349cc55cSDimitry Andric STDBRX, 1815349cc55cSDimitry Andric STDUX, 181606c3fb27SDimitry Andric SPILLTOVSR_STX, STDX, STDXTLS, STDXTLS_, 1817349cc55cSDimitry Andric STFDUX, 181806c3fb27SDimitry Andric STFDX, STFDXTLS, STFDXTLS_, 1819349cc55cSDimitry Andric STFIWX, STIWX, 1820349cc55cSDimitry Andric STFSUX, 182106c3fb27SDimitry Andric STFSX, STFSXTLS, STFSXTLS_, 1822349cc55cSDimitry Andric STHBRX, 1823349cc55cSDimitry Andric STHUX, STHUX8, 182406c3fb27SDimitry Andric STHX, STHX8, STHXTLS, STHXTLS_, STHXTLS_32, 1825349cc55cSDimitry Andric STVEBX, 1826349cc55cSDimitry Andric STVEHX, 1827349cc55cSDimitry Andric STVEWX, 1828349cc55cSDimitry Andric STVX, 1829349cc55cSDimitry Andric STVXL, 1830349cc55cSDimitry Andric STWBRX, 1831349cc55cSDimitry Andric STWUX, STWUX8, 183206c3fb27SDimitry Andric STWX, STWX8, STWXTLS, STWXTLS_, STWXTLS_32, 1833349cc55cSDimitry Andric STXSDX, 1834349cc55cSDimitry Andric STXSIBX, STXSIBXv, 1835349cc55cSDimitry Andric STXSIHX, STXSIHXv, 1836349cc55cSDimitry Andric STXSIWX, 1837349cc55cSDimitry Andric STXSSPX, 1838349cc55cSDimitry Andric STXVB16X, 1839349cc55cSDimitry Andric STXVD2X, 1840349cc55cSDimitry Andric STXVH8X, 1841349cc55cSDimitry Andric STXVRBX, 1842349cc55cSDimitry Andric STXVRDX, 1843349cc55cSDimitry Andric STXVRHX, 1844349cc55cSDimitry Andric STXVRWX, 1845349cc55cSDimitry Andric STXVW4X, 1846349cc55cSDimitry Andric STXVX 1847349cc55cSDimitry Andric)>; 1848349cc55cSDimitry Andric 1849349cc55cSDimitry Andric// Single crack instructions 1850349cc55cSDimitry Andric// 3 Cycles Store operations, 0 input operands 1851349cc55cSDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_DISP_ANY], 1852349cc55cSDimitry Andric (instrs 1853349cc55cSDimitry Andric EnforceIEIO, 1854349cc55cSDimitry Andric MSGSYNC, 1855349cc55cSDimitry Andric SLBSYNC, 1856349cc55cSDimitry Andric TLBSYNC 1857349cc55cSDimitry Andric)>; 1858349cc55cSDimitry Andric 1859349cc55cSDimitry Andric// Single crack instructions 1860349cc55cSDimitry Andric// 3 Cycles Store operations, 2 input operands 1861349cc55cSDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10ST_Read, P10ST_Read], 1862349cc55cSDimitry Andric (instrs 186306c3fb27SDimitry Andric CP_PASTE8_rec, CP_PASTE_rec, 1864349cc55cSDimitry Andric SLBIEG, 1865349cc55cSDimitry Andric TLBIE 1866349cc55cSDimitry Andric)>; 1867349cc55cSDimitry Andric 1868349cc55cSDimitry Andric// Single crack instructions 1869349cc55cSDimitry Andric// 3 Cycles Store operations, 3 input operands 1870349cc55cSDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10ST_Read, P10ST_Read, P10ST_Read], 1871349cc55cSDimitry Andric (instrs 1872349cc55cSDimitry Andric STBCIX, 187306c3fb27SDimitry Andric STBCX, 1874349cc55cSDimitry Andric STDCIX, 187506c3fb27SDimitry Andric STDCX, 1876349cc55cSDimitry Andric STHCIX, 187706c3fb27SDimitry Andric STHCX, 187806c3fb27SDimitry Andric STWCIX, 187906c3fb27SDimitry Andric STWCX 1880349cc55cSDimitry Andric)>; 1881349cc55cSDimitry Andric 1882349cc55cSDimitry Andric// 2-way crack instructions 1883349cc55cSDimitry Andric// 3 Cycles Store operations, and 3 Cycles ALU operations, 0 input operands 1884349cc55cSDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 1885349cc55cSDimitry Andric (instrs 188606c3fb27SDimitry Andric ISYNC, 18875f757f3fSDimitry Andric SYNCP10, 1888349cc55cSDimitry Andric SYNC 1889349cc55cSDimitry Andric)>; 1890349cc55cSDimitry Andric 1891349cc55cSDimitry Andric// Expand instructions 189206c3fb27SDimitry Andric// 3 Cycles Store operations, 3 Cycles ALU operations, 3 Cycles Store operations, 3 Cycles ALU operations, 3 Cycles Store operations, 3 Cycles ALU operations, 6 Cycles Load operations, and 3 Cycles Store operations, 1 input operands 1893349cc55cSDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10W_FX_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10W_FX_3C, P10W_DISP_ANY, P10W_LD_6C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY], 1894349cc55cSDimitry Andric (instrs 1895349cc55cSDimitry Andric LDAT, 1896349cc55cSDimitry Andric LWAT 1897349cc55cSDimitry Andric)>; 1898349cc55cSDimitry Andric 1899349cc55cSDimitry Andric// 4-way crack instructions 190006c3fb27SDimitry Andric// 3 Cycles Store operations, 3 Cycles ALU operations, 3 Cycles Store operations, and 3 Cycles Store operations, 2 input operands 1901349cc55cSDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY], 1902349cc55cSDimitry Andric (instrs 1903349cc55cSDimitry Andric STDAT, 1904349cc55cSDimitry Andric STWAT 1905349cc55cSDimitry Andric)>; 1906349cc55cSDimitry Andric 1907349cc55cSDimitry Andric// Expand instructions 190806c3fb27SDimitry Andric// 3 Cycles Store operations, 3 Cycles Store operations, 3 Cycles Store operations, and 3 Cycles Store operations, 1 input operands 190906c3fb27SDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_ST_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10ST_Read], 1910349cc55cSDimitry Andric (instrs 1911349cc55cSDimitry Andric STMW 1912349cc55cSDimitry Andric)>; 1913349cc55cSDimitry Andric 1914349cc55cSDimitry Andric// Expand instructions 191506c3fb27SDimitry Andric// 3 Cycles Store operations, 3 Cycles Store operations, 3 Cycles Store operations, and 3 Cycles Store operations, 2 input operands 191606c3fb27SDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_ST_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10ST_Read, P10ST_Read], 1917349cc55cSDimitry Andric (instrs 1918349cc55cSDimitry Andric STSWI 1919349cc55cSDimitry Andric)>; 1920349cc55cSDimitry Andric 192106c3fb27SDimitry Andric// 3 Cycles Store operations, 1 input operands 192206c3fb27SDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_PAIR, P10ST_Read], 1923349cc55cSDimitry Andric (instrs 1924349cc55cSDimitry Andric PSTB, PSTB8, PSTB8pc, PSTBpc, 1925349cc55cSDimitry Andric PSTD, PSTDpc, 1926349cc55cSDimitry Andric PSTFD, PSTFDpc, 1927349cc55cSDimitry Andric PSTFS, PSTFSpc, 1928349cc55cSDimitry Andric PSTH, PSTH8, PSTH8pc, PSTHpc, 1929349cc55cSDimitry Andric PSTW, PSTW8, PSTW8pc, PSTWpc, 1930349cc55cSDimitry Andric PSTXSD, PSTXSDpc, 1931349cc55cSDimitry Andric PSTXSSP, PSTXSSPpc, 1932349cc55cSDimitry Andric PSTXV, PSTXVpc 1933349cc55cSDimitry Andric)>; 1934349cc55cSDimitry Andric 1935349cc55cSDimitry Andric// 2-way crack instructions 193606c3fb27SDimitry Andric// 3 Cycles Store operations, and 3 Cycles Store operations, 1 input operands 193706c3fb27SDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_PAIR, P10W_ST_3C, P10ST_Read], 1938349cc55cSDimitry Andric (instrs 193906c3fb27SDimitry Andric STXVP 194006c3fb27SDimitry Andric)>; 194106c3fb27SDimitry Andric 194206c3fb27SDimitry Andric// 2-way crack instructions 194306c3fb27SDimitry Andric// 3 Cycles Store operations, and 3 Cycles Store operations, 3 input operands 194406c3fb27SDimitry Andricdef : InstRW<[P10W_ST_3C, P10W_DISP_PAIR, P10W_ST_3C, P10ST_Read, P10ST_Read, P10ST_Read], 194506c3fb27SDimitry Andric (instrs 1946349cc55cSDimitry Andric STXVPX 1947349cc55cSDimitry Andric)>; 1948349cc55cSDimitry Andric 1949349cc55cSDimitry Andric// FIXME - Miss scheduling information from datasheet 1950349cc55cSDimitry Andric// Temporary set it as 1 Cycles Simple Fixed-point (SFX) operations, 0 input operands 1951349cc55cSDimitry Andricdef : InstRW<[P10W_SX, P10W_DISP_ANY], 1952349cc55cSDimitry Andric (instrs 1953349cc55cSDimitry Andric ATTN, 1954349cc55cSDimitry Andric CP_ABORT, 1955bdd1243dSDimitry Andric CRNOT, 1956349cc55cSDimitry Andric DCBA, 1957349cc55cSDimitry Andric DCBI, 1958349cc55cSDimitry Andric DCBZL, 1959349cc55cSDimitry Andric DCCCI, 1960349cc55cSDimitry Andric ICBLC, 1961349cc55cSDimitry Andric ICBLQ, 1962349cc55cSDimitry Andric ICBTLS, 1963349cc55cSDimitry Andric ICCCI, 19644824e7fdSDimitry Andric LA, LA8, 1965349cc55cSDimitry Andric MFDCR, 1966349cc55cSDimitry Andric MFPMR, 1967349cc55cSDimitry Andric MFSRIN, 1968349cc55cSDimitry Andric MSYNC, 1969349cc55cSDimitry Andric MTDCR, 1970349cc55cSDimitry Andric MTPMR, 1971349cc55cSDimitry Andric MTSRIN, 1972349cc55cSDimitry Andric NAP, 1973349cc55cSDimitry Andric TLBIA, 1974349cc55cSDimitry Andric TLBLD, 1975349cc55cSDimitry Andric TLBLI, 1976349cc55cSDimitry Andric TLBRE2, 1977349cc55cSDimitry Andric TLBSX2, 1978349cc55cSDimitry Andric TLBSX2D, 1979349cc55cSDimitry Andric TLBWE2 1980349cc55cSDimitry Andric)>; 1981349cc55cSDimitry Andric 1982349cc55cSDimitry Andric// Single crack instructions 1983349cc55cSDimitry Andric// 3 Cycles Simple Fixed-point (SFX) operations, 0 input operands 1984349cc55cSDimitry Andricdef : InstRW<[P10W_SX_3C, P10W_DISP_EVEN, P10W_DISP_ANY], 1985349cc55cSDimitry Andric (instrs 1986349cc55cSDimitry Andric CLRBHRB, 198706c3fb27SDimitry Andric MFBHRBE, 198806c3fb27SDimitry Andric MFMSR, 198906c3fb27SDimitry Andric MFTB 1990349cc55cSDimitry Andric)>; 1991349cc55cSDimitry Andric 1992349cc55cSDimitry Andric// Single crack instructions 1993349cc55cSDimitry Andric// 3 Cycles Simple Fixed-point (SFX) operations, 1 input operands 1994349cc55cSDimitry Andricdef : InstRW<[P10W_SX_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10SX_Read], 1995349cc55cSDimitry Andric (instrs 1996349cc55cSDimitry Andric MTMSR, 1997349cc55cSDimitry Andric MTMSRD 1998349cc55cSDimitry Andric)>; 1999349cc55cSDimitry Andric 2000349cc55cSDimitry Andric// 2-way crack instructions 200106c3fb27SDimitry Andric// 3 Cycles Simple Fixed-point (SFX) operations, and 3 Cycles ALU operations, 0 input operands 2002349cc55cSDimitry Andricdef : InstRW<[P10W_SX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 2003349cc55cSDimitry Andric (instrs 2004349cc55cSDimitry Andric ADDPCIS 2005349cc55cSDimitry Andric)>; 2006349cc55cSDimitry Andric 2007349cc55cSDimitry Andric// 3 Cycles Simple Fixed-point (SFX) operations, 1 input operands 2008349cc55cSDimitry Andricdef : InstRW<[P10W_SX_3C, P10W_DISP_PAIR, P10SX_Read], 2009349cc55cSDimitry Andric (instrs 2010349cc55cSDimitry Andric PADDI, PADDI8, PADDI8pc, PADDIpc, PLI, PLI8 2011349cc55cSDimitry Andric)>; 2012349cc55cSDimitry Andric 2013349cc55cSDimitry Andric// 7 Cycles VMX Multiply operations, 2 input operands 2014349cc55cSDimitry Andricdef : InstRW<[P10W_vMU_7C, P10W_DISP_ANY, P10vMU_Read, P10vMU_Read], 2015349cc55cSDimitry Andric (instrs 2016349cc55cSDimitry Andric VMULESB, 2017349cc55cSDimitry Andric VMULESD, 2018349cc55cSDimitry Andric VMULESH, 2019349cc55cSDimitry Andric VMULESW, 2020349cc55cSDimitry Andric VMULEUB, 2021349cc55cSDimitry Andric VMULEUD, 2022349cc55cSDimitry Andric VMULEUH, 2023349cc55cSDimitry Andric VMULEUW, 2024349cc55cSDimitry Andric VMULHSW, 2025349cc55cSDimitry Andric VMULHUW, 2026349cc55cSDimitry Andric VMULOSB, 2027349cc55cSDimitry Andric VMULOSD, 2028349cc55cSDimitry Andric VMULOSH, 2029349cc55cSDimitry Andric VMULOSW, 2030349cc55cSDimitry Andric VMULOUB, 2031349cc55cSDimitry Andric VMULOUD, 2032349cc55cSDimitry Andric VMULOUH, 2033349cc55cSDimitry Andric VMULOUW, 2034349cc55cSDimitry Andric VMULUWM, 2035349cc55cSDimitry Andric VSUM2SWS, 2036349cc55cSDimitry Andric VSUM4SBS, 2037349cc55cSDimitry Andric VSUM4SHS, 2038349cc55cSDimitry Andric VSUM4UBS 2039349cc55cSDimitry Andric)>; 2040349cc55cSDimitry Andric 2041349cc55cSDimitry Andric// 7 Cycles VMX Multiply operations, 3 input operands 2042349cc55cSDimitry Andricdef : InstRW<[P10W_vMU_7C, P10W_DISP_ANY, P10vMU_Read, P10vMU_Read, P10vMU_Read], 2043349cc55cSDimitry Andric (instrs 2044349cc55cSDimitry Andric VMHADDSHS, 2045349cc55cSDimitry Andric VMHRADDSHS, 2046349cc55cSDimitry Andric VMLADDUHM, 2047349cc55cSDimitry Andric VMSUMCUD, 2048349cc55cSDimitry Andric VMSUMMBM, 2049349cc55cSDimitry Andric VMSUMSHM, 2050349cc55cSDimitry Andric VMSUMSHS, 2051349cc55cSDimitry Andric VMSUMUBM, 2052349cc55cSDimitry Andric VMSUMUDM, 2053349cc55cSDimitry Andric VMSUMUHM, 2054349cc55cSDimitry Andric VMSUMUHS 2055349cc55cSDimitry Andric)>; 20564824e7fdSDimitry Andric 2057