1//===--- P10InstrResources.td - P10 Scheduling Definitions -*- tablegen -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// Automatically generated file, do not edit! 9// 10// This file defines the itinerary class data for the POWER10 processor. 11// 12//===----------------------------------------------------------------------===// 13// 22 Cycles Binary Floating Point operations, 2 input operands 14def : InstRW<[P10W_BF_22C, P10W_DISP_ANY, P10BF_Read, P10BF_Read], 15 (instrs 16 FDIVS, 17 XSDIVSP 18)>; 19 20// 2-way crack instructions 21// 22 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 2 input operands 22def : InstRW<[P10W_BF_22C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 23 (instrs 24 FDIVS_rec 25)>; 26 27// 24 Cycles Binary Floating Point operations, 2 input operands 28def : InstRW<[P10W_BF_24C, P10W_DISP_ANY, P10BF_Read, P10BF_Read], 29 (instrs 30 XVDIVSP 31)>; 32 33// 26 Cycles Binary Floating Point operations, 1 input operands 34def : InstRW<[P10W_BF_26C, P10W_DISP_ANY, P10BF_Read], 35 (instrs 36 FSQRTS, 37 XSSQRTSP 38)>; 39 40// 2-way crack instructions 41// 26 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 1 input operands 42def : InstRW<[P10W_BF_26C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 43 (instrs 44 FSQRTS_rec 45)>; 46 47// 27 Cycles Binary Floating Point operations, 1 input operands 48def : InstRW<[P10W_BF_27C, P10W_DISP_ANY, P10BF_Read], 49 (instrs 50 XVSQRTSP 51)>; 52 53// 27 Cycles Binary Floating Point operations, 2 input operands 54def : InstRW<[P10W_BF_27C, P10W_DISP_ANY, P10BF_Read, P10BF_Read], 55 (instrs 56 FDIV, 57 XSDIVDP, 58 XVDIVDP 59)>; 60 61// 2-way crack instructions 62// 27 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 2 input operands 63def : InstRW<[P10W_BF_27C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 64 (instrs 65 FDIV_rec 66)>; 67 68// 36 Cycles Binary Floating Point operations, 1 input operands 69def : InstRW<[P10W_BF_36C, P10W_DISP_ANY, P10BF_Read], 70 (instrs 71 FSQRT, 72 XSSQRTDP, 73 XVSQRTDP 74)>; 75 76// 2-way crack instructions 77// 36 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 1 input operands 78def : InstRW<[P10W_BF_36C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 79 (instrs 80 FSQRT_rec 81)>; 82 83// 7 Cycles Binary Floating Point operations, 1 input operands 84def : InstRW<[P10W_BF_7C, P10W_DISP_ANY, P10BF_Read], 85 (instrs 86 FCFID, 87 FCFIDS, 88 FCFIDU, 89 FCFIDUS, 90 FCTID, 91 FCTIDU, 92 FCTIDUZ, 93 FCTIDZ, 94 FCTIW, 95 FCTIWU, 96 FCTIWUZ, 97 FCTIWZ, 98 FRE, 99 FRES, 100 FRIMD, FRIMS, 101 FRIND, FRINS, 102 FRIPD, FRIPS, 103 FRIZD, FRIZS, 104 FRSP, 105 FRSQRTE, 106 FRSQRTES, 107 VCFSX, VCFSX_0, 108 VCFUX, VCFUX_0, 109 VCTSXS, VCTSXS_0, 110 VCTUXS, VCTUXS_0, 111 VLOGEFP, 112 VREFP, 113 VRFIM, 114 VRFIN, 115 VRFIP, 116 VRFIZ, 117 VRSQRTEFP, 118 XSCVDPHP, 119 XSCVDPSP, 120 XSCVDPSPN, 121 XSCVDPSXDS, XSCVDPSXDSs, 122 XSCVDPSXWS, XSCVDPSXWSs, 123 XSCVDPUXDS, XSCVDPUXDSs, 124 XSCVDPUXWS, XSCVDPUXWSs, 125 XSCVSPDP, 126 XSCVSXDDP, 127 XSCVSXDSP, 128 XSCVUXDDP, 129 XSCVUXDSP, 130 XSRDPI, 131 XSRDPIC, 132 XSRDPIM, 133 XSRDPIP, 134 XSRDPIZ, 135 XSREDP, 136 XSRESP, 137 XSRSP, 138 XSRSQRTEDP, 139 XSRSQRTESP, 140 XVCVDPSP, 141 XVCVDPSXDS, 142 XVCVDPSXWS, 143 XVCVDPUXDS, 144 XVCVDPUXWS, 145 XVCVSPBF16, 146 XVCVSPDP, 147 XVCVSPHP, 148 XVCVSPSXDS, 149 XVCVSPSXWS, 150 XVCVSPUXDS, 151 XVCVSPUXWS, 152 XVCVSXDDP, 153 XVCVSXDSP, 154 XVCVSXWDP, 155 XVCVSXWSP, 156 XVCVUXDDP, 157 XVCVUXDSP, 158 XVCVUXWDP, 159 XVCVUXWSP, 160 XVRDPI, 161 XVRDPIC, 162 XVRDPIM, 163 XVRDPIP, 164 XVRDPIZ, 165 XVREDP, 166 XVRESP, 167 XVRSPI, 168 XVRSPIC, 169 XVRSPIM, 170 XVRSPIP, 171 XVRSPIZ, 172 XVRSQRTEDP, 173 XVRSQRTESP 174)>; 175 176// 7 Cycles Binary Floating Point operations, 2 input operands 177def : InstRW<[P10W_BF_7C, P10W_DISP_ANY, P10BF_Read, P10BF_Read], 178 (instrs 179 FADD, 180 FADDS, 181 FMUL, 182 FMULS, 183 FSUB, 184 FSUBS, 185 VADDFP, 186 VSUBFP, 187 XSADDDP, 188 XSADDSP, 189 XSMULDP, 190 XSMULSP, 191 XSSUBDP, 192 XSSUBSP, 193 XVADDDP, 194 XVADDSP, 195 XVMULDP, 196 XVMULSP, 197 XVSUBDP, 198 XVSUBSP 199)>; 200 201// 7 Cycles Binary Floating Point operations, 3 input operands 202def : InstRW<[P10W_BF_7C, P10W_DISP_ANY, P10BF_Read, P10BF_Read, P10BF_Read], 203 (instrs 204 FMADD, 205 FMADDS, 206 FMSUB, 207 FMSUBS, 208 FNMADD, 209 FNMADDS, 210 FNMSUB, 211 FNMSUBS, 212 FSELD, FSELS, 213 VMADDFP, 214 VNMSUBFP, 215 XSMADDADP, 216 XSMADDASP, 217 XSMADDMDP, 218 XSMADDMSP, 219 XSMSUBADP, 220 XSMSUBASP, 221 XSMSUBMDP, 222 XSMSUBMSP, 223 XSNMADDADP, 224 XSNMADDASP, 225 XSNMADDMDP, 226 XSNMADDMSP, 227 XSNMSUBADP, 228 XSNMSUBASP, 229 XSNMSUBMDP, 230 XSNMSUBMSP, 231 XVMADDADP, 232 XVMADDASP, 233 XVMADDMDP, 234 XVMADDMSP, 235 XVMSUBADP, 236 XVMSUBASP, 237 XVMSUBMDP, 238 XVMSUBMSP, 239 XVNMADDADP, 240 XVNMADDASP, 241 XVNMADDMDP, 242 XVNMADDMSP, 243 XVNMSUBADP, 244 XVNMSUBASP, 245 XVNMSUBMDP, 246 XVNMSUBMSP 247)>; 248 249// 2-way crack instructions 250// 7 Cycles Binary Floating Point operations, and 7 Cycles Binary Floating Point operations, 1 input operands 251def : InstRW<[P10W_BF_7C, P10W_DISP_EVEN, P10W_BF_7C, P10W_DISP_ANY, P10BF_Read], 252 (instrs 253 VEXPTEFP 254)>; 255 256// 2-way crack instructions 257// 7 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 2 input operands 258def : InstRW<[P10W_BF_7C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 259 (instrs 260 FADD_rec, 261 FADDS_rec, 262 FMUL_rec, 263 FMULS_rec, 264 FSUB_rec, 265 FSUBS_rec 266)>; 267 268// 2-way crack instructions 269// 7 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 1 input operands 270def : InstRW<[P10W_BF_7C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 271 (instrs 272 FCFID_rec, 273 FCFIDS_rec, 274 FCFIDU_rec, 275 FCFIDUS_rec, 276 FCTID_rec, 277 FCTIDU_rec, 278 FCTIDUZ_rec, 279 FCTIDZ_rec, 280 FCTIW_rec, 281 FCTIWU_rec, 282 FCTIWUZ_rec, 283 FCTIWZ_rec, 284 FRE_rec, 285 FRES_rec, 286 FRIMD_rec, FRIMS_rec, 287 FRIND_rec, FRINS_rec, 288 FRIPD_rec, FRIPS_rec, 289 FRIZD_rec, FRIZS_rec, 290 FRSP_rec, 291 FRSQRTE_rec, 292 FRSQRTES_rec 293)>; 294 295// 2-way crack instructions 296// 7 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 3 input operands 297def : InstRW<[P10W_BF_7C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 298 (instrs 299 FMADD_rec, 300 FMADDS_rec, 301 FMSUB_rec, 302 FMSUBS_rec, 303 FNMADD_rec, 304 FNMADDS_rec, 305 FNMSUB_rec, 306 FNMSUBS_rec, 307 FSELD_rec, FSELS_rec 308)>; 309 310// 2 Cycles Branch operations, 0 input operands 311def : InstRW<[P10W_BR_2C, P10W_DISP_ANY], 312 (instrs 313 BCLR, BCLRn, BDNZLR, BDNZLR8, BDNZLRm, BDNZLRp, BDZLR, BDZLR8, BDZLRm, BDZLRp, gBCLR, 314 BCLRL, BCLRLn, BDNZLRL, BDNZLRLm, BDNZLRLp, BDZLRL, BDZLRLm, BDZLRLp, gBCLRL, 315 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 316)>; 317 318// 2 Cycles Branch operations, 1 input operands 319def : InstRW<[P10W_BR_2C, P10W_DISP_ANY, P10BR_Read], 320 (instrs 321 B, BCC, BCCA, BCCCTR, BCCCTR8, BCCCTRL, BCCCTRL8, BCCL, BCCLA, BCCLR, BCCLRL, CTRL_DEP, TAILB, TAILB8, 322 BA, TAILBA, TAILBA8, 323 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, 324 BCL, BCLalways, BCLn, BDNZL, BDNZLm, BDNZLp, BDZL, BDZLm, BDZLp, gBCL, gBCLat, 325 BLA, BLA8, BLA8_NOP, BLA8_NOP_RM, BLA8_RM, BLA_RM 326)>; 327 328// 2 Cycles Branch operations, 3 input operands 329def : InstRW<[P10W_BR_2C, P10W_DISP_ANY, P10BR_Read, P10BR_Read, P10BR_Read], 330 (instrs 331 BCCTR, BCCTR8, BCCTR8n, BCCTRn, gBCCTR, 332 BCCTRL, BCCTRL8, BCCTRL8n, BCCTRLn, gBCCTRL 333)>; 334 335// 2 Cycles Branch operations, 4 input operands 336def : InstRW<[P10W_BR_2C, P10W_DISP_ANY, P10BR_Read, P10BR_Read, P10BR_Read, P10BR_Read], 337 (instrs 338 BDNZA, BDNZAm, BDNZAp, BDZA, BDZAm, BDZAp, gBCA, gBCAat, 339 BDNZLA, BDNZLAm, BDNZLAp, BDZLA, BDZLAm, BDZLAp, gBCLA, gBCLAat 340)>; 341 342// 7 Cycles Crypto operations, 1 input operands 343def : InstRW<[P10W_CY_7C, P10W_DISP_ANY, P10CY_Read], 344 (instrs 345 VSBOX 346)>; 347 348// 7 Cycles Crypto operations, 2 input operands 349def : InstRW<[P10W_CY_7C, P10W_DISP_ANY, P10CY_Read, P10CY_Read], 350 (instrs 351 CFUGED, 352 CNTLZDM, 353 CNTTZDM, 354 PDEPD, 355 PEXTD, 356 VCFUGED, 357 VCIPHER, 358 VCIPHERLAST, 359 VCLZDM, 360 VCTZDM, 361 VGNB, 362 VNCIPHER, 363 VNCIPHERLAST, 364 VPDEPD, 365 VPEXTD, 366 VPMSUMB, 367 VPMSUMD, 368 VPMSUMH, 369 VPMSUMW 370)>; 371 372// 13 Cycles Decimal Floating Point operations, 1 input operands 373def : InstRW<[P10W_DF_13C, P10W_DISP_ANY, P10DF_Read], 374 (instrs 375 XSCVDPQP, 376 XSCVQPDP, 377 XSCVQPDPO, 378 XSCVQPSDZ, 379 XSCVQPSQZ, 380 XSCVQPSWZ, 381 XSCVQPUDZ, 382 XSCVQPUQZ, 383 XSCVQPUWZ, 384 XSCVSDQP, 385 XSCVSQQP, 386 XSCVUDQP, 387 XSCVUQQP 388)>; 389 390// 13 Cycles Decimal Floating Point operations, 2 input operands 391def : InstRW<[P10W_DF_13C, P10W_DISP_ANY, P10DF_Read, P10DF_Read], 392 (instrs 393 XSADDQP, 394 XSADDQPO, 395 XSSUBQP, 396 XSSUBQPO 397)>; 398 399// 13 Cycles Decimal Floating Point operations, 3 input operands 400def : InstRW<[P10W_DF_13C, P10W_DISP_ANY, P10DF_Read, P10DF_Read, P10DF_Read], 401 (instrs 402 BCDSR_rec, 403 XSRQPI, 404 XSRQPIX, 405 XSRQPXP 406)>; 407 408// 2-way crack instructions 409// 13 Cycles Decimal Floating Point operations, and 3 Cycles Store operations, 2 input operands 410def : InstRW<[P10W_DF_13C, P10W_DISP_EVEN, P10W_ST_3C, P10W_DISP_ANY], 411 (instrs 412 HASHST, HASHST8, 413 HASHSTP, HASHSTP8 414)>; 415 416// 24 Cycles Decimal Floating Point operations, 1 input operands 417def : InstRW<[P10W_DF_24C, P10W_DISP_ANY, P10DF_Read], 418 (instrs 419 BCDCTSQ_rec 420)>; 421 422// 25 Cycles Decimal Floating Point operations, 2 input operands 423def : InstRW<[P10W_DF_25C, P10W_DISP_ANY, P10DF_Read, P10DF_Read], 424 (instrs 425 XSMULQP, 426 XSMULQPO 427)>; 428 429// 25 Cycles Decimal Floating Point operations, 3 input operands 430def : InstRW<[P10W_DF_25C, P10W_DISP_ANY, P10DF_Read, P10DF_Read, P10DF_Read], 431 (instrs 432 XSMADDQP, 433 XSMADDQPO, 434 XSMSUBQP, 435 XSMSUBQPO, 436 XSNMADDQP, 437 XSNMADDQPO, 438 XSNMSUBQP, 439 XSNMSUBQPO 440)>; 441 442// 38 Cycles Decimal Floating Point operations, 2 input operands 443def : InstRW<[P10W_DF_38C, P10W_DISP_ANY, P10DF_Read, P10DF_Read], 444 (instrs 445 BCDCFSQ_rec 446)>; 447 448// 59 Cycles Decimal Floating Point operations, 2 input operands 449def : InstRW<[P10W_DF_59C, P10W_DISP_ANY, P10DF_Read, P10DF_Read], 450 (instrs 451 XSDIVQP, 452 XSDIVQPO 453)>; 454 455// 61 Cycles Decimal Floating Point operations, 2 input operands 456def : InstRW<[P10W_DF_61C, P10W_DISP_ANY, P10DF_Read, P10DF_Read], 457 (instrs 458 VDIVESQ, 459 VDIVEUQ, 460 VDIVSQ, 461 VDIVUQ 462)>; 463 464// 68 Cycles Decimal Floating Point operations, 2 input operands 465def : InstRW<[P10W_DF_68C, P10W_DISP_ANY, P10DF_Read, P10DF_Read], 466 (instrs 467 VMODSQ, 468 VMODUQ 469)>; 470 471// 77 Cycles Decimal Floating Point operations, 1 input operands 472def : InstRW<[P10W_DF_77C, P10W_DISP_ANY, P10DF_Read], 473 (instrs 474 XSSQRTQP, 475 XSSQRTQPO 476)>; 477 478// 20 Cycles Scalar Fixed-Point Divide operations, 2 input operands 479def : InstRW<[P10W_DV_20C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 480 (instrs 481 DIVW, 482 DIVWO, 483 DIVWU, 484 DIVWUO, 485 MODSW 486)>; 487 488// 2-way crack instructions 489// 20 Cycles Scalar Fixed-Point Divide operations, and 3 Cycles ALU operations, 2 input operands 490def : InstRW<[P10W_DV_20C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 491 (instrs 492 DIVW_rec, 493 DIVWO_rec, 494 DIVWU_rec, 495 DIVWUO_rec 496)>; 497 498// 25 Cycles Scalar Fixed-Point Divide operations, 2 input operands 499def : InstRW<[P10W_DV_25C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 500 (instrs 501 DIVD, 502 DIVDO, 503 DIVDU, 504 DIVDUO, 505 DIVWE, 506 DIVWEO, 507 DIVWEU, 508 DIVWEUO 509)>; 510 511// 2-way crack instructions 512// 25 Cycles Scalar Fixed-Point Divide operations, and 3 Cycles ALU operations, 2 input operands 513def : InstRW<[P10W_DV_25C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 514 (instrs 515 DIVD_rec, 516 DIVDO_rec, 517 DIVDU_rec, 518 DIVDUO_rec, 519 DIVWE_rec, 520 DIVWEO_rec, 521 DIVWEU_rec, 522 DIVWEUO_rec 523)>; 524 525// 27 Cycles Scalar Fixed-Point Divide operations, 2 input operands 526def : InstRW<[P10W_DV_27C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 527 (instrs 528 MODSD, 529 MODUD, 530 MODUW 531)>; 532 533// 41 Cycles Scalar Fixed-Point Divide operations, 2 input operands 534def : InstRW<[P10W_DV_41C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 535 (instrs 536 DIVDE, 537 DIVDEO, 538 DIVDEU, 539 DIVDEUO 540)>; 541 542// 2-way crack instructions 543// 41 Cycles Scalar Fixed-Point Divide operations, and 3 Cycles ALU operations, 2 input operands 544def : InstRW<[P10W_DV_41C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 545 (instrs 546 DIVDE_rec, 547 DIVDEO_rec, 548 DIVDEU_rec, 549 DIVDEUO_rec 550)>; 551 552// 43 Cycles Scalar Fixed-Point Divide operations, 2 input operands 553def : InstRW<[P10W_DV_43C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 554 (instrs 555 VDIVSD, 556 VDIVUD 557)>; 558 559// 47 Cycles Scalar Fixed-Point Divide operations, 2 input operands 560def : InstRW<[P10W_DV_47C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 561 (instrs 562 VMODSD, 563 VMODUD 564)>; 565 566// 54 Cycles Scalar Fixed-Point Divide operations, 2 input operands 567def : InstRW<[P10W_DV_54C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 568 (instrs 569 VDIVSW, 570 VDIVUW 571)>; 572 573// 60 Cycles Scalar Fixed-Point Divide operations, 2 input operands 574def : InstRW<[P10W_DV_60C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 575 (instrs 576 VMODSW, 577 VMODUW 578)>; 579 580// 75 Cycles Scalar Fixed-Point Divide operations, 2 input operands 581def : InstRW<[P10W_DV_75C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 582 (instrs 583 VDIVESD, 584 VDIVEUD 585)>; 586 587// 83 Cycles Scalar Fixed-Point Divide operations, 2 input operands 588def : InstRW<[P10W_DV_83C, P10W_DISP_ANY, P10DV_Read, P10DV_Read], 589 (instrs 590 VDIVESW, 591 VDIVEUW 592)>; 593 594// 5 Cycles Fixed-Point and BCD operations, 1 input operands 595def : InstRW<[P10W_DX_5C, P10W_DISP_ANY, P10DX_Read], 596 (instrs 597 BCDCTN_rec, 598 VMUL10CUQ, 599 VMUL10UQ, 600 XSXSIGQP 601)>; 602 603// 5 Cycles Fixed-Point and BCD operations, 2 input operands 604def : InstRW<[P10W_DX_5C, P10W_DISP_ANY, P10DX_Read, P10DX_Read], 605 (instrs 606 BCDCFN_rec, 607 BCDCFZ_rec, 608 BCDCPSGN_rec, 609 BCDCTZ_rec, 610 BCDSETSGN_rec, 611 BCDUS_rec, 612 BCDUTRUNC_rec, 613 VADDCUQ, 614 VADDUQM, 615 VMUL10ECUQ, 616 VMUL10EUQ, 617 VSUBCUQ, 618 VSUBUQM, 619 XSCMPEXPQP, 620 XSCMPOQP, 621 XSCMPUQP, 622 XSMAXCQP, 623 XSMINCQP, 624 XSTSTDCQP, 625 XXGENPCVBM 626)>; 627 628// 5 Cycles Fixed-Point and BCD operations, 3 input operands 629def : InstRW<[P10W_DX_5C, P10W_DISP_ANY, P10DX_Read, P10DX_Read, P10DX_Read], 630 (instrs 631 BCDADD_rec, 632 BCDS_rec, 633 BCDSUB_rec, 634 BCDTRUNC_rec, 635 VADDECUQ, 636 VADDEUQM, 637 VSUBECUQ, 638 VSUBEUQM 639)>; 640 641// 4 Cycles ALU2 operations, 0 input operands 642def : InstRW<[P10W_F2_4C, P10W_DISP_ANY], 643 (instrs 644 TRAP, TW 645)>; 646 647// 4 Cycles ALU2 operations, 1 input operands 648def : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read], 649 (instrs 650 CNTLZD, 651 CNTLZD_rec, 652 CNTLZW, CNTLZW8, 653 CNTLZW8_rec, CNTLZW_rec, 654 CNTTZD, 655 CNTTZD_rec, 656 CNTTZW, CNTTZW8, 657 CNTTZW8_rec, CNTTZW_rec, 658 FTSQRT, 659 MTVSRBM, 660 MTVSRBMI, 661 MTVSRDM, 662 MTVSRHM, 663 MTVSRQM, 664 MTVSRWM, 665 POPCNTB, POPCNTB8, 666 POPCNTD, 667 POPCNTW, 668 VCLZB, 669 VCLZD, 670 VCLZH, 671 VCLZW, 672 VCTZB, 673 VCTZD, 674 VCTZH, 675 VCTZW, 676 VEXPANDBM, 677 VEXPANDDM, 678 VEXPANDHM, 679 VEXPANDQM, 680 VEXPANDWM, 681 VEXTRACTBM, 682 VEXTRACTDM, 683 VEXTRACTHM, 684 VEXTRACTQM, 685 VEXTRACTWM, 686 VPOPCNTB, 687 VPOPCNTD, 688 VPOPCNTH, 689 VPOPCNTW, 690 VPRTYBD, 691 VPRTYBW, 692 XSCVHPDP, 693 XSCVSPDPN, 694 XSTSQRTDP, 695 XVCVHPSP, 696 XVTLSBB, 697 XVTSQRTDP, 698 XVTSQRTSP 699)>; 700 701// 4 Cycles ALU2 operations, 2 input operands 702def : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read, P10F2_Read], 703 (instrs 704 CMPEQB, 705 EXTSWSLI_32_64_rec, EXTSWSLI_rec, 706 FCMPOD, FCMPOS, 707 FCMPUD, FCMPUS, 708 FTDIV, 709 SLD_rec, 710 SLW8_rec, SLW_rec, 711 SRD_rec, 712 SRW8_rec, SRW_rec, 713 VABSDUB, 714 VABSDUH, 715 VABSDUW, 716 VADDCUW, 717 VADDSBS, 718 VADDSHS, 719 VADDSWS, 720 VADDUBS, 721 VADDUHS, 722 VADDUWS, 723 VAVGSB, 724 VAVGSH, 725 VAVGSW, 726 VAVGUB, 727 VAVGUH, 728 VAVGUW, 729 VCMPBFP, 730 VCMPBFP_rec, 731 VCMPEQFP, 732 VCMPEQFP_rec, 733 VCMPEQUB_rec, 734 VCMPEQUD_rec, 735 VCMPEQUH_rec, 736 VCMPEQUQ, 737 VCMPEQUQ_rec, 738 VCMPEQUW_rec, 739 VCMPGEFP, 740 VCMPGEFP_rec, 741 VCMPGTFP, 742 VCMPGTFP_rec, 743 VCMPGTSB_rec, 744 VCMPGTSD_rec, 745 VCMPGTSH_rec, 746 VCMPGTSQ, 747 VCMPGTSQ_rec, 748 VCMPGTSW_rec, 749 VCMPGTUB_rec, 750 VCMPGTUD_rec, 751 VCMPGTUH_rec, 752 VCMPGTUQ, 753 VCMPGTUQ_rec, 754 VCMPGTUW_rec, 755 VCMPNEB_rec, 756 VCMPNEH_rec, 757 VCMPNEW_rec, 758 VCMPNEZB_rec, 759 VCMPNEZH_rec, 760 VCMPNEZW_rec, 761 VCMPSQ, 762 VCMPUQ, 763 VCNTMBB, 764 VCNTMBD, 765 VCNTMBH, 766 VCNTMBW, 767 VMAXFP, 768 VMINFP, 769 VSUBCUW, 770 VSUBSBS, 771 VSUBSHS, 772 VSUBSWS, 773 VSUBUBS, 774 VSUBUHS, 775 VSUBUWS, 776 XSCMPEQDP, 777 XSCMPEXPDP, 778 XSCMPGEDP, 779 XSCMPGTDP, 780 XSCMPODP, 781 XSCMPUDP, 782 XSMAXCDP, 783 XSMAXDP, 784 XSMAXJDP, 785 XSMINCDP, 786 XSMINDP, 787 XSMINJDP, 788 XSTDIVDP, 789 XSTSTDCDP, 790 XSTSTDCSP, 791 XVCMPEQDP, 792 XVCMPEQDP_rec, 793 XVCMPEQSP, 794 XVCMPEQSP_rec, 795 XVCMPGEDP, 796 XVCMPGEDP_rec, 797 XVCMPGESP, 798 XVCMPGESP_rec, 799 XVCMPGTDP, 800 XVCMPGTDP_rec, 801 XVCMPGTSP, 802 XVCMPGTSP_rec, 803 XVMAXDP, 804 XVMAXSP, 805 XVMINDP, 806 XVMINSP, 807 XVTDIVDP, 808 XVTDIVSP, 809 XVTSTDCDP, 810 XVTSTDCSP 811)>; 812 813// 4 Cycles ALU2 operations, 3 input operands 814def : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read, P10F2_Read, P10F2_Read], 815 (instrs 816 CMPRB, CMPRB8, 817 RLDCL_rec, 818 RLDCR_rec, 819 RLDIC_rec, 820 RLDICL_32_rec, RLDICL_rec, 821 RLDICR_rec, 822 TD, 823 TDI, 824 TWI, 825 VSHASIGMAD, 826 VSHASIGMAW 827)>; 828 829// 4 Cycles ALU2 operations, 4 input operands 830def : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read, P10F2_Read, P10F2_Read, P10F2_Read], 831 (instrs 832 RLDIMI_rec, 833 RLWINM8_rec, RLWINM_rec, 834 RLWNM8_rec, RLWNM_rec 835)>; 836 837// 4 Cycles ALU2 operations, 5 input operands 838def : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read, P10F2_Read, P10F2_Read, P10F2_Read, P10F2_Read], 839 (instrs 840 RLWIMI8_rec, RLWIMI_rec 841)>; 842 843// Single crack instructions 844// 4 Cycles ALU2 operations, 2 input operands 845def : InstRW<[P10W_F2_4C, P10W_DISP_EVEN, P10W_DISP_ANY, P10F2_Read, P10F2_Read], 846 (instrs 847 SRAD_rec, 848 SRADI_rec, 849 SRAW_rec, 850 SRAWI_rec 851)>; 852 853// Single crack instructions 854// 4 Cycles ALU2 operations, 3 input operands 855def : InstRW<[P10W_F2_4C, P10W_DISP_EVEN, P10W_DISP_ANY, P10F2_Read, P10F2_Read, P10F2_Read], 856 (instrs 857 TABORTDC, 858 TABORTDCI, 859 TABORTWC, 860 TABORTWCI 861)>; 862 863// 2-way crack instructions 864// 4 Cycles ALU2 operations, and 4 Cycles Permute operations, 2 input operands 865def : InstRW<[P10W_F2_4C, P10W_DISP_EVEN, P10W_PM_4C, P10W_DISP_ANY], 866 (instrs 867 VRLQ, 868 VRLQNM, 869 VSLQ, 870 VSRAQ, 871 VSRQ 872)>; 873 874// 2-way crack instructions 875// 4 Cycles ALU2 operations, and 4 Cycles Permute operations, 3 input operands 876def : InstRW<[P10W_F2_4C, P10W_DISP_EVEN, P10W_PM_4C, P10W_DISP_ANY], 877 (instrs 878 VRLQMI 879)>; 880 881// 2-way crack instructions 882// 4 Cycles ALU2 operations, and 4 Cycles ALU2 operations, 0 input operands 883def : InstRW<[P10W_F2_4C, P10W_DISP_PAIR, P10W_F2_4C], 884 (instrs 885 MFCR, MFCR8 886)>; 887 888// 2 Cycles ALU operations, 1 input operands 889def : InstRW<[P10W_FX_2C, P10W_DISP_ANY, P10FX_Read], 890 (instrs 891 MTCTR, MTCTR8, MTCTR8loop, MTCTRloop, 892 MTLR, MTLR8 893)>; 894 895// 3 Cycles ALU operations, 0 input operands 896def : InstRW<[P10W_FX_3C, P10W_DISP_ANY], 897 (instrs 898 CR6SET, CREQV, CRSET, 899 DSS, DSSALL, 900 MCRXRX, 901 MFCTR, MFCTR8, 902 MFLR, MFLR8, 903 NOP, NOP_GT_PWR6, NOP_GT_PWR7, ORI, ORI8, 904 VXOR, V_SET0, V_SET0B, V_SET0H, 905 XXLEQV, XXLEQVOnes, 906 XXLXOR, XXLXORdpz, XXLXORspz, XXLXORz 907)>; 908 909// 3 Cycles ALU operations, 1 input operands 910def : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read], 911 (instrs 912 ADDI, ADDI8, ADDIdtprelL32, ADDItlsldLADDR32, ADDItocL, LI, LI8, 913 ADDIS, ADDIS8, ADDISdtprelHA32, ADDIStocHA, ADDIStocHA8, LIS, LIS8, 914 ADDME, ADDME8, 915 ADDME8O, ADDMEO, 916 ADDZE, ADDZE8, 917 ADDZE8O, ADDZEO, 918 EXTSB, EXTSB8, EXTSB8_32_64, 919 EXTSB8_rec, EXTSB_rec, 920 EXTSH, EXTSH8, EXTSH8_32_64, 921 EXTSH8_rec, EXTSH_rec, 922 EXTSW, EXTSW_32, EXTSW_32_64, 923 EXTSW_32_64_rec, EXTSW_rec, 924 FABSD, FABSS, 925 FMR, 926 FNABSD, FNABSS, 927 FNEGD, FNEGS, 928 MCRF, 929 MFOCRF, MFOCRF8, 930 MFVRD, MFVSRD, 931 MFVRWZ, MFVSRWZ, 932 MTOCRF, MTOCRF8, 933 MTVRD, MTVSRD, 934 MTVRWA, MTVSRWA, 935 MTVRWZ, MTVSRWZ, 936 NEG, NEG8, 937 NEG8_rec, NEG_rec, 938 NEG8O, NEGO, 939 SETB, SETB8, 940 SETBC, SETBC8, 941 SETBCR, SETBCR8, 942 SETNBC, SETNBC8, 943 SETNBCR, SETNBCR8, 944 SUBFME, SUBFME8, 945 SUBFME8O, SUBFMEO, 946 SUBFZE, SUBFZE8, 947 SUBFZE8O, SUBFZEO, 948 VEXTSB2D, VEXTSB2Ds, 949 VEXTSB2W, VEXTSB2Ws, 950 VEXTSD2Q, 951 VEXTSH2D, VEXTSH2Ds, 952 VEXTSH2W, VEXTSH2Ws, 953 VEXTSW2D, VEXTSW2Ds, 954 VNEGD, 955 VNEGW, 956 WAIT, 957 XSABSDP, 958 XSABSQP, 959 XSNABSDP, 960 XSNABSQP, 961 XSNEGDP, 962 XSNEGQP, 963 XSXEXPDP, 964 XSXEXPQP, 965 XSXSIGDP, 966 XVABSDP, 967 XVABSSP, 968 XVNABSDP, 969 XVNABSSP, 970 XVNEGDP, 971 XVNEGSP, 972 XVXEXPDP, 973 XVXEXPSP, 974 XVXSIGDP, 975 XVXSIGSP 976)>; 977 978// 3 Cycles ALU operations, 2 input operands 979def : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read], 980 (instrs 981 ADD4, ADD4TLS, ADD8, ADD8TLS, ADD8TLS_, 982 ADD4_rec, ADD8_rec, 983 ADDE, ADDE8, 984 ADDE8O, ADDEO, 985 ADDIC, ADDIC8, 986 ADD4O, ADD8O, 987 AND, AND8, 988 AND8_rec, AND_rec, 989 ANDC, ANDC8, 990 ANDC8_rec, ANDC_rec, 991 ANDI8_rec, ANDI_rec, 992 ANDIS8_rec, ANDIS_rec, 993 CMPD, CMPW, 994 CMPB, CMPB8, 995 CMPDI, CMPWI, 996 CMPLD, CMPLW, 997 CMPLDI, CMPLWI, 998 CRAND, 999 CRANDC, 1000 CRNAND, 1001 CRNOR, 1002 CROR, 1003 CRORC, 1004 CR6UNSET, CRUNSET, CRXOR, 1005 EQV, EQV8, 1006 EQV8_rec, EQV_rec, 1007 EXTSWSLI, EXTSWSLI_32_64, 1008 FCPSGND, FCPSGNS, 1009 NAND, NAND8, 1010 NAND8_rec, NAND_rec, 1011 NOR, NOR8, 1012 NOR8_rec, NOR_rec, 1013 COPY, OR, OR8, 1014 OR8_rec, OR_rec, 1015 ORC, ORC8, 1016 ORC8_rec, ORC_rec, 1017 ORIS, ORIS8, 1018 SLD, 1019 SLW, SLW8, 1020 SRAD, 1021 SRADI, SRADI_32, 1022 SRAW, 1023 SRAWI, 1024 SRD, 1025 SRW, SRW8, 1026 SUBF, SUBF8, 1027 SUBF8_rec, SUBF_rec, 1028 SUBFE, SUBFE8, 1029 SUBFE8O, SUBFEO, 1030 SUBFIC, SUBFIC8, 1031 SUBF8O, SUBFO, 1032 VADDUBM, 1033 VADDUDM, 1034 VADDUHM, 1035 VADDUWM, 1036 VAND, 1037 VANDC, 1038 VCMPEQUB, 1039 VCMPEQUD, 1040 VCMPEQUH, 1041 VCMPEQUW, 1042 VCMPGTSB, 1043 VCMPGTSD, 1044 VCMPGTSH, 1045 VCMPGTSW, 1046 VCMPGTUB, 1047 VCMPGTUD, 1048 VCMPGTUH, 1049 VCMPGTUW, 1050 VCMPNEB, 1051 VCMPNEH, 1052 VCMPNEW, 1053 VCMPNEZB, 1054 VCMPNEZH, 1055 VCMPNEZW, 1056 VEQV, 1057 VMAXSB, 1058 VMAXSD, 1059 VMAXSH, 1060 VMAXSW, 1061 VMAXUB, 1062 VMAXUD, 1063 VMAXUH, 1064 VMAXUW, 1065 VMINSB, 1066 VMINSD, 1067 VMINSH, 1068 VMINSW, 1069 VMINUB, 1070 VMINUD, 1071 VMINUH, 1072 VMINUW, 1073 VMRGEW, 1074 VMRGOW, 1075 VNAND, 1076 VNOR, 1077 VOR, 1078 VORC, 1079 VRLB, 1080 VRLD, 1081 VRLDNM, 1082 VRLH, 1083 VRLW, 1084 VRLWNM, 1085 VSLB, 1086 VSLD, 1087 VSLH, 1088 VSLW, 1089 VSRAB, 1090 VSRAD, 1091 VSRAH, 1092 VSRAW, 1093 VSRB, 1094 VSRD, 1095 VSRH, 1096 VSRW, 1097 VSUBUBM, 1098 VSUBUDM, 1099 VSUBUHM, 1100 VSUBUWM, 1101 XOR, XOR8, 1102 XOR8_rec, XOR_rec, 1103 XORI, XORI8, 1104 XORIS, XORIS8, 1105 XSCPSGNDP, 1106 XSCPSGNQP, 1107 XSIEXPDP, 1108 XSIEXPQP, 1109 XVCPSGNDP, 1110 XVCPSGNSP, 1111 XVIEXPDP, 1112 XVIEXPSP, 1113 XXLAND, 1114 XXLANDC, 1115 XXLNAND, 1116 XXLNOR, 1117 XXLOR, XXLORf, 1118 XXLORC 1119)>; 1120 1121// 3 Cycles ALU operations, 3 input operands 1122def : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read, P10FX_Read], 1123 (instrs 1124 ADDEX, ADDEX8, 1125 DST, DST64, DSTT, DSTT64, 1126 DSTST, DSTST64, DSTSTT, DSTSTT64, 1127 ISEL, ISEL8, 1128 RLDCL, 1129 RLDCR, 1130 RLDIC, 1131 RLDICL, RLDICL_32, RLDICL_32_64, 1132 RLDICR, RLDICR_32, 1133 VRLDMI, 1134 VRLWMI, 1135 VSEL, 1136 XXSEL 1137)>; 1138 1139// 3 Cycles ALU operations, 4 input operands 1140def : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read, P10FX_Read, P10FX_Read], 1141 (instrs 1142 RLDIMI, 1143 RLWINM, RLWINM8, 1144 RLWNM, RLWNM8 1145)>; 1146 1147// 3 Cycles ALU operations, 5 input operands 1148def : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read, P10FX_Read, P10FX_Read, P10FX_Read], 1149 (instrs 1150 RLWIMI, RLWIMI8 1151)>; 1152 1153// Single crack instructions 1154// 3 Cycles ALU operations, 0 input operands 1155def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_DISP_ANY], 1156 (instrs 1157 MFFS, 1158 MFFS_rec, 1159 MFFSL, 1160 MFVSCR, 1161 TRECHKPT 1162)>; 1163 1164// Single crack instructions 1165// 3 Cycles ALU operations, 1 input operands 1166def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10FX_Read], 1167 (instrs 1168 ADDME8_rec, ADDME_rec, 1169 ADDME8O_rec, ADDMEO_rec, 1170 ADDZE8_rec, ADDZE_rec, 1171 ADDZE8O_rec, ADDZEO_rec, 1172 MCRFS, 1173 MFFSCDRN, 1174 MFFSCDRNI, 1175 MFFSCRN, 1176 MFFSCRNI, 1177 MTFSB0, 1178 MTVSCR, 1179 NEG8O_rec, NEGO_rec, 1180 SUBFME8_rec, SUBFME_rec, 1181 SUBFME8O_rec, SUBFMEO_rec, 1182 SUBFZE8_rec, SUBFZE_rec, 1183 SUBFZE8O_rec, SUBFZEO_rec, 1184 TABORT, 1185 TBEGIN, 1186 TRECLAIM, 1187 TSR 1188)>; 1189 1190// Single crack instructions 1191// 3 Cycles ALU operations, 2 input operands 1192def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10FX_Read, P10FX_Read], 1193 (instrs 1194 ADDE8_rec, ADDE_rec, 1195 ADDE8O_rec, ADDEO_rec, 1196 ADDIC_rec, 1197 ADD4O_rec, ADD8O_rec, 1198 SUBFE8_rec, SUBFE_rec, 1199 SUBFE8O_rec, SUBFEO_rec, 1200 SUBF8O_rec, SUBFO_rec 1201)>; 1202 1203// 2-way crack instructions 1204// 3 Cycles ALU operations, and 3 Cycles ALU operations, 0 input operands 1205def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 1206 (instrs 1207 HRFID, 1208 MFFSCE, 1209 RFID, 1210 STOP 1211)>; 1212 1213// 2-way crack instructions 1214// 3 Cycles ALU operations, and 3 Cycles ALU operations, 1 input operands 1215def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10FX_Read], 1216 (instrs 1217 FABSD_rec, FABSS_rec, 1218 FMR_rec, 1219 FNABSD_rec, FNABSS_rec, 1220 FNEGD_rec, FNEGS_rec, 1221 MTFSB1, 1222 RFEBB, 1223 SC 1224)>; 1225 1226// 2-way crack instructions 1227// 3 Cycles ALU operations, and 3 Cycles ALU operations, 2 input operands 1228def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read], 1229 (instrs 1230 ADDC, ADDC8, 1231 ADDC8_rec, ADDC_rec, 1232 ADDC8O, ADDCO, 1233 FCPSGND_rec, FCPSGNS_rec, 1234 MTFSF, MTFSFb, 1235 MTFSFI, MTFSFIb, 1236 SUBFC, SUBFC8, 1237 SUBFC8_rec, SUBFC_rec, 1238 SUBFC8O, SUBFCO 1239)>; 1240 1241// 2-way crack instructions 1242// 3 Cycles ALU operations, and 3 Cycles ALU operations, 3 input operands 1243def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read, P10FX_Read], 1244 (instrs 1245 MTFSFI_rec 1246)>; 1247 1248// 2-way crack instructions 1249// 3 Cycles ALU operations, and 3 Cycles ALU operations, 4 input operands 1250def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read, P10FX_Read, P10FX_Read], 1251 (instrs 1252 MTFSF_rec 1253)>; 1254 1255// 4-way crack instructions 1256// 3 Cycles ALU operations, 3 Cycles ALU operations, 3 Cycles ALU operations, and 3 Cycles ALU operations, 2 input operands 1257def : 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], 1258 (instrs 1259 ADDC8O_rec, ADDCO_rec, 1260 SUBFC8O_rec, SUBFCO_rec 1261)>; 1262 1263// 2-way crack instructions 1264// 3 Cycles ALU operations, and 4 Cycles Permute operations, 1 input operands 1265def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_PM_4C, P10W_DISP_ANY], 1266 (instrs 1267 VSTRIBL_rec, 1268 VSTRIBR_rec, 1269 VSTRIHL_rec, 1270 VSTRIHR_rec 1271)>; 1272 1273// 2-way crack instructions 1274// 3 Cycles ALU operations, and 3 Cycles ALU operations, 2 input operands 1275def : InstRW<[P10W_FX_3C, P10W_DISP_PAIR, P10W_FX_3C, P10FX_Read, P10FX_Read], 1276 (instrs 1277 MTCRF, MTCRF8 1278)>; 1279 1280// 6 Cycles Load operations, 1 input operands 1281def : InstRW<[P10W_LD_6C, P10W_DISP_ANY, P10LD_Read], 1282 (instrs 1283 LBZ, LBZ8, 1284 LD, LDtoc, LDtocBA, LDtocCPT, LDtocJTI, LDtocL, SPILLTOVSR_LD, 1285 LDBRX, 1286 DFLOADf32, DFLOADf64, LFD, 1287 LFDX, XFLOADf32, XFLOADf64, 1288 LFIWAX, LIWAX, 1289 LFIWZX, LIWZX, 1290 LHA, LHA8, 1291 LHAX, LHAX8, 1292 LHBRX, LHBRX8, 1293 LHZ, LHZ8, 1294 LVEBX, 1295 LVEHX, 1296 LVEWX, 1297 LVX, 1298 LVXL, 1299 LWA, LWA_32, 1300 LWAX, LWAX_32, 1301 LWBRX, LWBRX8, 1302 LWZ, LWZ8, LWZtoc, LWZtocL, 1303 LXSD, 1304 LXSDX, 1305 LXSIBZX, 1306 LXSIHZX, 1307 LXSIWAX, 1308 LXSIWZX, 1309 LXV, 1310 LXVB16X, 1311 LXVD2X, 1312 LXVDSX, 1313 LXVH8X, 1314 LXVRBX, 1315 LXVRDX, 1316 LXVRHX, 1317 LXVRWX, 1318 LXVW4X, 1319 LXVWSX, 1320 LXVX 1321)>; 1322 1323// 6 Cycles Load operations, 2 input operands 1324def : InstRW<[P10W_LD_6C, P10W_DISP_ANY, P10LD_Read, P10LD_Read], 1325 (instrs 1326 DCBT, 1327 DCBTST, 1328 ICBT, 1329 LBZX, LBZX8, LBZXTLS, LBZXTLS_, LBZXTLS_32, 1330 LDX, LDXTLS, LDXTLS_, SPILLTOVSR_LDX, 1331 LHZX, LHZX8, LHZXTLS, LHZXTLS_, LHZXTLS_32, 1332 LWZX, LWZX8, LWZXTLS, LWZXTLS_, LWZXTLS_32, 1333 LXVL, 1334 LXVLL 1335)>; 1336 1337// 2-way crack instructions 1338// 6 Cycles Load operations, and 13 Cycles Decimal Floating Point operations, 2 input operands 1339def : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_DF_13C, P10W_DISP_ANY], 1340 (instrs 1341 HASHCHK, HASHCHK8, 1342 HASHCHKP, HASHCHKP8 1343)>; 1344 1345// Single crack instructions 1346// 6 Cycles Load operations, 0 input operands 1347def : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_DISP_ANY], 1348 (instrs 1349 SLBIA 1350)>; 1351 1352// Single crack instructions 1353// 6 Cycles Load operations, 1 input operands 1354def : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_DISP_ANY, P10LD_Read], 1355 (instrs 1356 DARN, 1357 LBARX, LBARXL, 1358 LDARX, LDARXL, 1359 LHARX, LHARXL, 1360 LWARX, LWARXL, 1361 SLBFEE_rec, 1362 SLBIE, 1363 SLBMFEE, 1364 SLBMFEV 1365)>; 1366 1367// Single crack instructions 1368// 6 Cycles Load operations, 2 input operands 1369def : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_DISP_ANY, P10LD_Read, P10LD_Read], 1370 (instrs 1371 LBZCIX, 1372 LDCIX, 1373 LHZCIX, 1374 LWZCIX, 1375 MTSPR, MTSPR8, MTSR, MTVRSAVE, MTVRSAVEv 1376)>; 1377 1378// Expand instructions 1379// 6 Cycles Load operations, 6 Cycles Load operations, 6 Cycles Load operations, and 6 Cycles Load operations, 1 input operands 1380def : 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], 1381 (instrs 1382 LMW 1383)>; 1384 1385// Expand instructions 1386// 6 Cycles Load operations, 6 Cycles Load operations, 6 Cycles Load operations, and 6 Cycles Load operations, 2 input operands 1387def : 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, P10LD_Read], 1388 (instrs 1389 LSWI 1390)>; 1391 1392// 2-way crack instructions 1393// 6 Cycles Load operations, and 3 Cycles Simple Fixed-point (SFX) operations, 1 input operands 1394def : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_SX_3C, P10W_DISP_ANY], 1395 (instrs 1396 LBZU, LBZU8, 1397 LBZUX, LBZUX8, 1398 LDU, 1399 LDUX, 1400 LFDU, 1401 LFDUX, 1402 LHAU, LHAU8, 1403 LHAUX, LHAUX8, 1404 LHZU, LHZU8, 1405 LHZUX, LHZUX8, 1406 LWAUX, 1407 LWZU, LWZU8, 1408 LWZUX, LWZUX8 1409)>; 1410 1411// 6 Cycles Load operations, 1 input operands 1412def : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10LD_Read], 1413 (instrs 1414 PLBZ, PLBZ8, PLBZ8pc, PLBZpc, 1415 PLD, PLDpc, 1416 PLFD, PLFDpc, 1417 PLFS, PLFSpc, 1418 PLHA, PLHA8, PLHA8pc, PLHApc, 1419 PLHZ, PLHZ8, PLHZ8pc, PLHZpc, 1420 PLWA, PLWA8, PLWA8pc, PLWApc, 1421 PLWZ, PLWZ8, PLWZ8pc, PLWZpc, 1422 PLXSD, PLXSDpc, 1423 PLXSSP, PLXSSPpc, 1424 PLXV, PLXVpc, 1425 PLXVP, PLXVPpc 1426)>; 1427 1428// 2-way crack instructions 1429// 6 Cycles Load operations, and 4 Cycles ALU2 operations, 1 input operands 1430def : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_F2_4C], 1431 (instrs 1432 LFS, 1433 LFSX, 1434 LXSSP, 1435 LXSSPX 1436)>; 1437 1438// 4-way crack instructions 1439// 6 Cycles Load operations, 4 Cycles ALU2 operations, 3 Cycles Simple Fixed-point (SFX) operations, and 3 Cycles ALU operations, 1 input operands 1440def : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_F2_4C, P10W_SX_3C, P10W_DISP_ANY, P10W_FX_3C, P10W_DISP_ANY], 1441 (instrs 1442 LFSU, 1443 LFSUX 1444)>; 1445 1446// 2-way crack instructions 1447// 6 Cycles Load operations, and 6 Cycles Load operations, 1 input operands 1448def : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_LD_6C, P10W_DISP_PAIR, P10LD_Read], 1449 (instrs 1450 TLBIEL 1451)>; 1452 1453// 2-way crack instructions 1454// 6 Cycles Load operations, and 6 Cycles Load operations, 2 input operands 1455def : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_LD_6C, P10W_DISP_PAIR, P10LD_Read, P10LD_Read], 1456 (instrs 1457 SLBMTE 1458)>; 1459 1460// 2-way crack instructions 1461// 6 Cycles Load operations, and 3 Cycles Simple Fixed-point (SFX) operations, 1 input operands 1462def : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_SX_3C], 1463 (instrs 1464 LXVP, 1465 LXVPX 1466)>; 1467 1468// Single crack instructions 1469// 13 Cycles Unknown operations, 1 input operands 1470def : InstRW<[P10W_MFL_13C, P10W_DISP_EVEN, P10W_DISP_ANY], 1471 (instrs 1472 MFSPR, MFSPR8, MFSR, MFTB8, MFVRSAVE, MFVRSAVEv 1473)>; 1474 1475// 10 Cycles SIMD Matrix Multiply Engine operations, 0 input operands 1476def : InstRW<[P10W_MM_10C, P10W_DISP_ANY], 1477 (instrs 1478 XXSETACCZ 1479)>; 1480 1481// 10 Cycles SIMD Matrix Multiply Engine operations, 2 input operands 1482def : InstRW<[P10W_MM_10C, P10W_DISP_ANY, P10MM_Read, P10MM_Read], 1483 (instrs 1484 XVBF16GER2, 1485 XVF16GER2, 1486 XVF32GER, 1487 XVF64GER, 1488 XVI16GER2, 1489 XVI16GER2S, 1490 XVI4GER8, 1491 XVI8GER4 1492)>; 1493 1494// 10 Cycles SIMD Matrix Multiply Engine operations, 3 input operands 1495def : InstRW<[P10W_MM_10C, P10W_DISP_ANY, P10MM_Read, P10MM_Read, P10MM_Read], 1496 (instrs 1497 XVBF16GER2NN, 1498 XVBF16GER2NP, 1499 XVBF16GER2PN, 1500 XVBF16GER2PP, 1501 XVF16GER2NN, 1502 XVF16GER2NP, 1503 XVF16GER2PN, 1504 XVF16GER2PP, 1505 XVF32GERNN, 1506 XVF32GERNP, 1507 XVF32GERPN, 1508 XVF32GERPP, 1509 XVF64GERNN, 1510 XVF64GERNP, 1511 XVF64GERPN, 1512 XVF64GERPP, 1513 XVI16GER2PP, 1514 XVI16GER2SPP, 1515 XVI4GER8PP, 1516 XVI8GER4PP, 1517 XVI8GER4SPP 1518)>; 1519 1520// 10 Cycles SIMD Matrix Multiply Engine operations, 4 input operands 1521def : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10MM_Read, P10MM_Read, P10MM_Read, P10MM_Read], 1522 (instrs 1523 PMXVF32GER, 1524 PMXVF64GER 1525)>; 1526 1527// 10 Cycles SIMD Matrix Multiply Engine operations, 5 input operands 1528def : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10MM_Read, P10MM_Read, P10MM_Read, P10MM_Read, P10MM_Read], 1529 (instrs 1530 PMXVBF16GER2, 1531 PMXVF16GER2, 1532 PMXVF32GERNN, 1533 PMXVF32GERNP, 1534 PMXVF32GERPN, 1535 PMXVF32GERPP, 1536 PMXVF64GERNN, 1537 PMXVF64GERNP, 1538 PMXVF64GERPN, 1539 PMXVF64GERPP, 1540 PMXVI16GER2, 1541 PMXVI16GER2S, 1542 PMXVI4GER8, 1543 PMXVI8GER4 1544)>; 1545 1546// 10 Cycles SIMD Matrix Multiply Engine operations, 6 input operands 1547def : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10MM_Read, P10MM_Read, P10MM_Read, P10MM_Read, P10MM_Read, P10MM_Read], 1548 (instrs 1549 PMXVBF16GER2NN, 1550 PMXVBF16GER2NP, 1551 PMXVBF16GER2PN, 1552 PMXVBF16GER2PP, 1553 PMXVF16GER2NN, 1554 PMXVF16GER2NP, 1555 PMXVF16GER2PN, 1556 PMXVF16GER2PP, 1557 PMXVI16GER2PP, 1558 PMXVI16GER2SPP, 1559 PMXVI4GER8PP, 1560 PMXVI8GER4PP, 1561 PMXVI8GER4SPP 1562)>; 1563 1564// 2-way crack instructions 1565// 10 Cycles SIMD Matrix Multiply Engine operations, and 3 Cycles ALU operations, 1 input operands 1566def : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10W_FX_3C], 1567 (instrs 1568 XXMTACC 1569)>; 1570 1571// 4-way crack instructions 1572// 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 1573def : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10W_FX_3C, P10W_MM_10C, P10W_DISP_PAIR, P10W_FX_3C], 1574 (instrs 1575 XXMFACC 1576)>; 1577 1578// 5 Cycles GPR Multiply operations, 2 input operands 1579def : InstRW<[P10W_MU_5C, P10W_DISP_ANY, P10MU_Read, P10MU_Read], 1580 (instrs 1581 MULHD, 1582 MULHDU, 1583 MULHW, 1584 MULHWU, 1585 MULLD, 1586 MULLDO, 1587 MULLI, MULLI8, 1588 MULLW, 1589 MULLWO, 1590 VMULHSD, 1591 VMULHUD, 1592 VMULLD 1593)>; 1594 1595// 5 Cycles GPR Multiply operations, 3 input operands 1596def : InstRW<[P10W_MU_5C, P10W_DISP_ANY, P10MU_Read, P10MU_Read, P10MU_Read], 1597 (instrs 1598 MADDHD, 1599 MADDHDU, 1600 MADDLD, MADDLD8 1601)>; 1602 1603// 2-way crack instructions 1604// 5 Cycles GPR Multiply operations, and 3 Cycles ALU operations, 2 input operands 1605def : InstRW<[P10W_MU_5C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 1606 (instrs 1607 MULHD_rec, 1608 MULHDU_rec, 1609 MULHW_rec, 1610 MULHWU_rec, 1611 MULLD_rec, 1612 MULLDO_rec, 1613 MULLW_rec, 1614 MULLWO_rec 1615)>; 1616 1617// 4 Cycles Permute operations, 0 input operands 1618def : InstRW<[P10W_PM_4C, P10W_DISP_ANY], 1619 (instrs 1620 VSPLTISW, V_SETALLONES, V_SETALLONESB, V_SETALLONESH 1621)>; 1622 1623// 4 Cycles Permute operations, 1 input operands 1624def : InstRW<[P10W_PM_4C, P10W_DISP_ANY, P10PM_Read], 1625 (instrs 1626 LVSL, 1627 LVSR, 1628 MFVSRLD, 1629 MTVSRWS, 1630 VCLZLSBB, 1631 VCTZLSBB, 1632 VGBBD, 1633 VPRTYBQ, 1634 VSPLTISB, 1635 VSPLTISH, 1636 VSTRIBL, 1637 VSTRIBR, 1638 VSTRIHL, 1639 VSTRIHR, 1640 VUPKHPX, 1641 VUPKHSB, 1642 VUPKHSH, 1643 VUPKHSW, 1644 VUPKLPX, 1645 VUPKLSB, 1646 VUPKLSH, 1647 VUPKLSW, 1648 XVCVBF16SPN, 1649 XXBRD, 1650 XXBRH, 1651 XXBRQ, 1652 XXBRW, 1653 XXSPLTIB 1654)>; 1655 1656// 4 Cycles Permute operations, 2 input operands 1657def : InstRW<[P10W_PM_4C, P10W_DISP_ANY, P10PM_Read, P10PM_Read], 1658 (instrs 1659 BPERMD, 1660 MTVSRDD, 1661 VBPERMD, 1662 VBPERMQ, 1663 VCLRLB, 1664 VCLRRB, 1665 VEXTRACTD, 1666 VEXTRACTUB, 1667 VEXTRACTUH, 1668 VEXTRACTUW, 1669 VEXTUBLX, 1670 VEXTUBRX, 1671 VEXTUHLX, 1672 VEXTUHRX, 1673 VEXTUWLX, 1674 VEXTUWRX, 1675 VINSERTD, 1676 VINSERTW, 1677 VMRGHB, 1678 VMRGHH, 1679 VMRGHW, 1680 VMRGLB, 1681 VMRGLH, 1682 VMRGLW, 1683 VPKPX, 1684 VPKSDSS, 1685 VPKSDUS, 1686 VPKSHSS, 1687 VPKSHUS, 1688 VPKSWSS, 1689 VPKSWUS, 1690 VPKUDUM, 1691 VPKUDUS, 1692 VPKUHUM, 1693 VPKUHUS, 1694 VPKUWUM, 1695 VPKUWUS, 1696 VSL, 1697 VSLO, 1698 VSLV, 1699 VSPLTB, VSPLTBs, 1700 VSPLTH, VSPLTHs, 1701 VSPLTW, 1702 VSR, 1703 VSRO, 1704 VSRV, 1705 XXEXTRACTUW, 1706 XXGENPCVDM, 1707 XXGENPCVHM, 1708 XXGENPCVWM, 1709 XXMRGHW, 1710 XXMRGLW, 1711 XXPERM, 1712 XXPERMDI, XXPERMDIs, 1713 XXPERMR, 1714 XXSLDWI, XXSLDWIs, 1715 XXSPLTW, XXSPLTWs 1716)>; 1717 1718// 4 Cycles Permute operations, 3 input operands 1719def : InstRW<[P10W_PM_4C, P10W_DISP_ANY, P10PM_Read, P10PM_Read, P10PM_Read], 1720 (instrs 1721 VEXTDDVLX, 1722 VEXTDDVRX, 1723 VEXTDUBVLX, 1724 VEXTDUBVRX, 1725 VEXTDUHVLX, 1726 VEXTDUHVRX, 1727 VEXTDUWVLX, 1728 VEXTDUWVRX, 1729 VINSBLX, 1730 VINSBRX, 1731 VINSBVLX, 1732 VINSBVRX, 1733 VINSD, 1734 VINSDLX, 1735 VINSDRX, 1736 VINSERTB, 1737 VINSERTH, 1738 VINSHLX, 1739 VINSHRX, 1740 VINSHVLX, 1741 VINSHVRX, 1742 VINSW, 1743 VINSWLX, 1744 VINSWRX, 1745 VINSWVLX, 1746 VINSWVRX, 1747 VPERM, 1748 VPERMR, 1749 VPERMXOR, 1750 VSLDBI, 1751 VSLDOI, 1752 VSRDBI, 1753 XXINSERTW 1754)>; 1755 1756// 2-way crack instructions 1757// 4 Cycles Permute operations, and 7 Cycles VMX Multiply operations, 2 input operands 1758def : InstRW<[P10W_PM_4C, P10W_DISP_EVEN, P10W_vMU_7C, P10W_DISP_ANY], 1759 (instrs 1760 VSUMSWS 1761)>; 1762 1763// 4 Cycles Permute operations, 1 input operands 1764def : InstRW<[P10W_PM_4C, P10W_DISP_PAIR, P10PM_Read], 1765 (instrs 1766 XXSPLTIDP, 1767 XXSPLTIW 1768)>; 1769 1770// 4 Cycles Permute operations, 3 input operands 1771def : InstRW<[P10W_PM_4C, P10W_DISP_PAIR, P10PM_Read, P10PM_Read, P10PM_Read], 1772 (instrs 1773 XXBLENDVB, 1774 XXBLENDVD, 1775 XXBLENDVH, 1776 XXBLENDVW, 1777 XXSPLTI32DX 1778)>; 1779 1780// 4 Cycles Permute operations, 4 input operands 1781def : InstRW<[P10W_PM_4C, P10W_DISP_PAIR, P10PM_Read, P10PM_Read, P10PM_Read, P10PM_Read], 1782 (instrs 1783 XXEVAL, 1784 XXPERMX 1785)>; 1786 1787// 3 Cycles Store operations, 1 input operands 1788def : InstRW<[P10W_ST_3C, P10W_DISP_ANY, P10ST_Read], 1789 (instrs 1790 DCBST, 1791 DCBZ, 1792 ICBI 1793)>; 1794 1795// 3 Cycles Store operations, 2 input operands 1796def : InstRW<[P10W_ST_3C, P10W_DISP_ANY, P10ST_Read, P10ST_Read], 1797 (instrs 1798 DCBF, 1799 PSTXVP, PSTXVPpc, 1800 STB, STB8, 1801 STBU, STBU8, 1802 STBUX, STBUX8, 1803 SPILLTOVSR_ST, STD, 1804 STDBRX, 1805 STDU, 1806 STDUX, 1807 DFSTOREf32, DFSTOREf64, STFD, 1808 STFDU, 1809 STFDUX, 1810 STFDX, 1811 STFIWX, STIWX, 1812 STFS, 1813 STFSU, 1814 STFSUX, 1815 STFSX, 1816 STH, STH8, 1817 STHBRX, 1818 STHU, STHU8, 1819 STHUX, STHUX8, 1820 STVEBX, 1821 STVEHX, 1822 STVEWX, 1823 STVX, 1824 STVXL, 1825 STW, STW8, 1826 STWBRX, 1827 STWU, STWU8, 1828 STWUX, STWUX8, 1829 STXSD, 1830 STXSDX, 1831 STXSIBX, STXSIBXv, 1832 STXSIHX, STXSIHXv, 1833 STXSIWX, 1834 STXSSP, 1835 STXSSPX, 1836 STXV, 1837 STXVB16X, 1838 STXVD2X, 1839 STXVH8X, 1840 STXVRBX, 1841 STXVRDX, 1842 STXVRHX, 1843 STXVRWX, 1844 STXVW4X, 1845 STXVX 1846)>; 1847 1848// 3 Cycles Store operations, 3 input operands 1849def : InstRW<[P10W_ST_3C, P10W_DISP_ANY, P10ST_Read, P10ST_Read, P10ST_Read], 1850 (instrs 1851 CP_COPY, CP_COPY8, 1852 STBX, STBX8, STBXTLS, STBXTLS_, STBXTLS_32, 1853 SPILLTOVSR_STX, STDX, STDXTLS, STDXTLS_, 1854 STHX, STHX8, STHXTLS, STHXTLS_, STHXTLS_32, 1855 STWX, STWX8, STWXTLS, STWXTLS_, STWXTLS_32, 1856 STXVL, 1857 STXVLL 1858)>; 1859 1860// Single crack instructions 1861// 3 Cycles Store operations, 0 input operands 1862def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_DISP_ANY], 1863 (instrs 1864 EnforceIEIO, 1865 MSGSYNC, 1866 SLBSYNC, 1867 TCHECK, 1868 TLBSYNC 1869)>; 1870 1871// Single crack instructions 1872// 3 Cycles Store operations, 1 input operands 1873def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10ST_Read], 1874 (instrs 1875 TEND 1876)>; 1877 1878// Single crack instructions 1879// 3 Cycles Store operations, 2 input operands 1880def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10ST_Read, P10ST_Read], 1881 (instrs 1882 SLBIEG, 1883 STBCX, 1884 STDCX, 1885 STHCX, 1886 STWCX, 1887 TLBIE 1888)>; 1889 1890// Single crack instructions 1891// 3 Cycles Store operations, 3 input operands 1892def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10ST_Read, P10ST_Read, P10ST_Read], 1893 (instrs 1894 CP_PASTE8_rec, CP_PASTE_rec, 1895 STBCIX, 1896 STDCIX, 1897 STHCIX, 1898 STWCIX 1899)>; 1900 1901// 2-way crack instructions 1902// 3 Cycles Store operations, and 3 Cycles ALU operations, 0 input operands 1903def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 1904 (instrs 1905 ISYNC 1906)>; 1907 1908// 2-way crack instructions 1909// 3 Cycles Store operations, and 3 Cycles ALU operations, 1 input operands 1910def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 1911 (instrs 1912 SYNC 1913)>; 1914 1915// Expand instructions 1916// 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, 2 input operands 1917def : 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], 1918 (instrs 1919 LDAT, 1920 LWAT 1921)>; 1922 1923// 4-way crack instructions 1924// 3 Cycles Store operations, 3 Cycles ALU operations, 3 Cycles Store operations, and 3 Cycles Store operations, 3 input operands 1925def : 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], 1926 (instrs 1927 STDAT, 1928 STWAT 1929)>; 1930 1931// Expand instructions 1932// 3 Cycles Store operations, 3 Cycles Store operations, 3 Cycles Store operations, and 3 Cycles Store operations, 2 input operands 1933def : 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], 1934 (instrs 1935 STMW 1936)>; 1937 1938// Expand instructions 1939// 3 Cycles Store operations, 3 Cycles Store operations, 3 Cycles Store operations, and 3 Cycles Store operations, 3 input operands 1940def : 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, P10ST_Read], 1941 (instrs 1942 STSWI 1943)>; 1944 1945// 3 Cycles Store operations, 2 input operands 1946def : InstRW<[P10W_ST_3C, P10W_DISP_PAIR, P10ST_Read, P10ST_Read], 1947 (instrs 1948 PSTB, PSTB8, PSTB8pc, PSTBpc, 1949 PSTD, PSTDpc, 1950 PSTFD, PSTFDpc, 1951 PSTFS, PSTFSpc, 1952 PSTH, PSTH8, PSTH8pc, PSTHpc, 1953 PSTW, PSTW8, PSTW8pc, PSTWpc, 1954 PSTXSD, PSTXSDpc, 1955 PSTXSSP, PSTXSSPpc, 1956 PSTXV, PSTXVpc 1957)>; 1958 1959// 2-way crack instructions 1960// 3 Cycles Store operations, and 3 Cycles Store operations, 2 input operands 1961def : InstRW<[P10W_ST_3C, P10W_DISP_PAIR, P10W_ST_3C, P10ST_Read, P10ST_Read], 1962 (instrs 1963 STXVP, 1964 STXVPX 1965)>; 1966 1967// FIXME - Miss scheduling information from datasheet 1968// Temporary set it as 1 Cycles Simple Fixed-point (SFX) operations, 0 input operands 1969def : InstRW<[P10W_SX, P10W_DISP_ANY], 1970 (instrs 1971 ATTN, 1972 CP_ABORT, 1973 DCBA, 1974 DCBI, 1975 DCBZL, 1976 DCCCI, 1977 ICBLC, 1978 ICBLQ, 1979 ICBTLS, 1980 ICCCI, 1981 LA, LA8, 1982 LDMX, 1983 MFDCR, 1984 MFPMR, 1985 MFSRIN, 1986 MSYNC, 1987 MTDCR, 1988 MTPMR, 1989 MTSRIN, 1990 NAP, 1991 TLBIA, 1992 TLBLD, 1993 TLBLI, 1994 TLBRE2, 1995 TLBSX2, 1996 TLBSX2D, 1997 TLBWE2 1998)>; 1999 2000// Single crack instructions 2001// 3 Cycles Simple Fixed-point (SFX) operations, 0 input operands 2002def : InstRW<[P10W_SX_3C, P10W_DISP_EVEN, P10W_DISP_ANY], 2003 (instrs 2004 CLRBHRB, 2005 MFMSR 2006)>; 2007 2008// Single crack instructions 2009// 3 Cycles Simple Fixed-point (SFX) operations, 1 input operands 2010def : InstRW<[P10W_SX_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10SX_Read], 2011 (instrs 2012 MFTB 2013)>; 2014 2015// Single crack instructions 2016// 3 Cycles Simple Fixed-point (SFX) operations, 2 input operands 2017def : InstRW<[P10W_SX_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10SX_Read, P10SX_Read], 2018 (instrs 2019 MFBHRBE, 2020 MTMSR, 2021 MTMSRD 2022)>; 2023 2024// 2-way crack instructions 2025// 3 Cycles Simple Fixed-point (SFX) operations, and 3 Cycles ALU operations, 1 input operands 2026def : InstRW<[P10W_SX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY], 2027 (instrs 2028 ADDPCIS 2029)>; 2030 2031// 3 Cycles Simple Fixed-point (SFX) operations, 1 input operands 2032def : InstRW<[P10W_SX_3C, P10W_DISP_PAIR, P10SX_Read], 2033 (instrs 2034 PADDI, PADDI8, PADDI8pc, PADDIpc, PLI, PLI8 2035)>; 2036 2037// 7 Cycles VMX Multiply operations, 2 input operands 2038def : InstRW<[P10W_vMU_7C, P10W_DISP_ANY, P10vMU_Read, P10vMU_Read], 2039 (instrs 2040 VMULESB, 2041 VMULESD, 2042 VMULESH, 2043 VMULESW, 2044 VMULEUB, 2045 VMULEUD, 2046 VMULEUH, 2047 VMULEUW, 2048 VMULHSW, 2049 VMULHUW, 2050 VMULOSB, 2051 VMULOSD, 2052 VMULOSH, 2053 VMULOSW, 2054 VMULOUB, 2055 VMULOUD, 2056 VMULOUH, 2057 VMULOUW, 2058 VMULUWM, 2059 VSUM2SWS, 2060 VSUM4SBS, 2061 VSUM4SHS, 2062 VSUM4UBS 2063)>; 2064 2065// 7 Cycles VMX Multiply operations, 3 input operands 2066def : InstRW<[P10W_vMU_7C, P10W_DISP_ANY, P10vMU_Read, P10vMU_Read, P10vMU_Read], 2067 (instrs 2068 VMHADDSHS, 2069 VMHRADDSHS, 2070 VMLADDUHM, 2071 VMSUMCUD, 2072 VMSUMMBM, 2073 VMSUMSHM, 2074 VMSUMSHS, 2075 VMSUMUBM, 2076 VMSUMUDM, 2077 VMSUMUHM, 2078 VMSUMUHS 2079)>; 2080 2081