|
8 | 8 | //===----------------------------------------------------------------------===//
|
9 | 9 | //
|
10 | 10 | // This file describes the instructions introduced for the Future CPU for MMA.
|
| 11 | +// Please reference "PPCInstrVSX.td" for file structure. |
11 | 12 | //
|
12 | 13 | //===----------------------------------------------------------------------===//
|
13 | 14 |
|
@@ -390,7 +391,12 @@ class XX2Form_AT3_XB6_ID2_E1_BL2<bits<6> opcode, bits<9> xo, dag OOL, dag IOL,
|
390 | 391 | let Inst{31} = 0;
|
391 | 392 | }
|
392 | 393 |
|
393 |
| -let Predicates = [IsISAFuture] in { |
| 394 | +//-------------------------- Instruction definitions -------------------------// |
| 395 | +// Predicate combinations available: |
| 396 | +// [MMA, IsISAFuture] |
| 397 | +// [MMA, PrefixInstrs, IsISAFuture] |
| 398 | + |
| 399 | +let Predicates = [MMA, IsISAFuture] in { |
394 | 400 | def DMXXEXTFDMR512 : XX3Form_AT3_XABp5_P1<60, 226,
|
395 | 401 | (outs vsrprc:$XAp, vsrprc:$XBp),
|
396 | 402 | (ins wacc:$AT),
|
@@ -437,188 +443,187 @@ let Predicates = [IsISAFuture] in {
|
437 | 443 | def DMSETDMRZ : XForm_AT3<31, 2, 177, (outs dmr:$AT), (ins),
|
438 | 444 | "dmsetdmrz $AT", NoItinerary,
|
439 | 445 | [(set v1024i1:$AT, (int_ppc_mma_dmsetdmrz))]>;
|
440 |
| -} |
441 |
| - |
442 |
| -// MMA+ accumulating/non-accumulating instructions. |
443 | 446 |
|
444 |
| -// DMXVI8GERX4, DMXVI8GERX4PP, PMDMXVI8GERX4, PMDMXVI8GERX4PP |
445 |
| -defm DMXVI8GERX4 : DMR_UM_M448_XOEO<59, 10, (ins vsrprc:$XAp, vsrc:$XB), |
446 |
| - "dmxvi8gerx4", "$AT, $XAp, $XB">; |
447 |
| - |
448 |
| -let Predicates = [MMA, IsISAFuture] in { |
449 |
| - def DMXVI8GERX4SPP : |
450 |
| - XX3Form_AT3_XAp5B6<59, 98, (outs dmr:$AT), (ins dmr:$ATi, vsrprc:$XAp, vsrc:$XB), |
451 |
| - "dmxvi8gerx4spp $AT, $XAp, $XB", IIC_VecGeneral, []>, |
452 |
| - RegConstraint<"$ATi = $AT">; |
453 |
| -} |
| 447 | + // DMXVI8GERX4, DMXVI8GERX4PP, PMDMXVI8GERX4, PMDMXVI8GERX4PP |
| 448 | + defm DMXVI8GERX4 : DMR_UM_M448_XOEO<59, 10, (ins vsrprc:$XAp, vsrc:$XB), |
| 449 | + "dmxvi8gerx4", "$AT, $XAp, $XB">; |
| 450 | + |
| 451 | + // DMXVBF16GERX2, DMXVBF16GERX2PP, DMXVBF16GERX2PN, dMXVBF16GERX2NP, |
| 452 | + // DMXVBF16GERX2NN PMDMXVBF16GERX2, PMDMXVBF16GERX2PP, PMDMXVBF16GERX2PN, |
| 453 | + // PMDMXVBF16GERX2NP, PMDMXVBF16GERX2NN |
| 454 | + defm DMXVBF16GERX2 |
| 455 | + : DMR_NEG_UM_M284_XOXORf939a0<59, 74, (ins vsrprc:$XAp, vsrc:$XB), |
| 456 | + "dmxvbf16gerx2", "$AT, $XAp, $XB">; |
| 457 | + |
| 458 | + // DMXVF16GERX2, DMXVF16GERX2PP, DMXVF16GERX2PN, dMXVF16GERX2NP, |
| 459 | + // DMXVF16GERX2NN PMDMXVF16GERX2, PMDMXVF16GERX2PP, PMDMXVF16GERX2PN, |
| 460 | + // PMDMXVF16GERX2NP, PMDMXVF16GERX2NN |
| 461 | + defm DMXVF16GERX2 |
| 462 | + : DMR_NEG_UM_M284_XOXORd11188<59, 66, (ins vsrprc:$XAp, vsrc:$XB), |
| 463 | + "dmxvf16gerx2", "$AT, $XAp, $XB">; |
| 464 | + |
| 465 | + // DMF cryptography [support] Instructions |
| 466 | + def DMSHA2HASH |
| 467 | + : XForm_AT3_T1_AB3< |
| 468 | + 31, 14, 177, (outs dmr:$AT), (ins dmr:$ATi, dmr:$AB, u1imm:$T), |
| 469 | + "dmsha2hash $AT, $AB, $T", |
| 470 | + [(set v1024i1:$AT, (int_ppc_mma_dmsha2hash v1024i1:$ATi, |
| 471 | + v1024i1:$AB, timm:$T))]>, |
| 472 | + RegConstraint<"$ATi = $AT">; |
| 473 | + def DMSHA3HASH |
| 474 | + : XForm_ATp2_SR5<31, 15, 177, (outs dmrp:$ATp), |
| 475 | + (ins dmrp:$ATpi, u5imm:$SR), "dmsha3hash $ATp, $SR", |
| 476 | + [(set v2048i1:$ATp, |
| 477 | + (int_ppc_mma_dmsha3hash v2048i1:$ATpi, timm:$SR))]>, |
| 478 | + RegConstraint<"$ATpi = $ATp">; |
| 479 | + def DMXXSHAPAD |
| 480 | + : XX2Form_AT3_XB6_ID2_E1_BL2<60, 421, (outs dmr:$AT), |
| 481 | + (ins dmr:$ATi, vsrc:$XB, u2imm:$ID, u1imm:$E, |
| 482 | + u2imm:$BL), |
| 483 | + "dmxxshapad $AT, $XB, $ID, $E, $BL", []>, |
| 484 | + RegConstraint<"$ATi = $AT">; |
| 485 | + |
| 486 | + // MMA+ accumulating/non-accumulating instructions. |
| 487 | + def DMXVI8GERX4SPP |
| 488 | + : XX3Form_AT3_XAp5B6<59, 98, (outs dmr:$AT), |
| 489 | + (ins dmr:$ATi, vsrprc:$XAp, vsrc:$XB), |
| 490 | + "dmxvi8gerx4spp $AT, $XAp, $XB", IIC_VecGeneral, []>, |
| 491 | + RegConstraint<"$ATi = $AT">; |
| 492 | + |
| 493 | +} // End of [MMA, IsISAFuture] |
454 | 494 |
|
455 | 495 | let Predicates = [MMA, PrefixInstrs, IsISAFuture] in {
|
456 |
| - def PMDMXVI8GERX4SPP : |
457 |
| - MMIRR_XX3Form_X8YP4_XAp5B6<59, 98, (outs dmr:$AT), |
458 |
| - (ins dmr:$ATi, vsrprc:$XAp,vsrc:$XB, u8imm:$XMSK, |
459 |
| - u4imm:$YMSK, u4imm:$PMSK), |
460 |
| - "pmdmxvi8gerx4spp $AT, $XAp, $XB, $XMSK, $YMSK, $PMSK", |
461 |
| - IIC_VecGeneral, []>, |
462 |
| - RegConstraint<"$ATi = $AT">; |
| 496 | + def PMDMXVI8GERX4SPP |
| 497 | + : MMIRR_XX3Form_X8YP4_XAp5B6< |
| 498 | + 59, 98, (outs dmr:$AT), |
| 499 | + (ins dmr:$ATi, vsrprc:$XAp, vsrc:$XB, u8imm:$XMSK, u4imm:$YMSK, |
| 500 | + u4imm:$PMSK), |
| 501 | + "pmdmxvi8gerx4spp $AT, $XAp, $XB, $XMSK, $YMSK, $PMSK", |
| 502 | + IIC_VecGeneral, []>, |
| 503 | + RegConstraint<"$ATi = $AT">; |
463 | 504 | }
|
464 | 505 |
|
465 |
| -// DMXVBF16GERX2, DMXVBF16GERX2PP, DMXVBF16GERX2PN, dMXVBF16GERX2NP, DMXVBF16GERX2NN |
466 |
| -// PMDMXVBF16GERX2, PMDMXVBF16GERX2PP, PMDMXVBF16GERX2PN, PMDMXVBF16GERX2NP, PMDMXVBF16GERX2NN |
467 |
| -defm DMXVBF16GERX2 : DMR_NEG_UM_M284_XOXORf939a0<59, 74, (ins vsrprc:$XAp, vsrc:$XB), |
468 |
| - "dmxvbf16gerx2", "$AT, $XAp, $XB">; |
469 |
| - |
470 |
| -// DMXVF16GERX2, DMXVF16GERX2PP, DMXVF16GERX2PN, dMXVF16GERX2NP, DMXVF16GERX2NN |
471 |
| -// PMDMXVF16GERX2, PMDMXVF16GERX2PP, PMDMXVF16GERX2PN, PMDMXVF16GERX2NP, PMDMXVF16GERX2NN |
472 |
| -defm DMXVF16GERX2 : DMR_NEG_UM_M284_XOXORd11188<59, 66, (ins vsrprc:$XAp, vsrc:$XB), |
473 |
| - "dmxvf16gerx2", "$AT, $XAp, $XB">; |
474 |
| - |
475 |
| -// DMF cryptography [support] Instructions |
476 |
| -let Predicates = [IsISAFuture] in { |
477 |
| - def DMSHA2HASH : |
478 |
| - XForm_AT3_T1_AB3<31, 14, 177, (outs dmr:$AT), (ins dmr:$ATi, dmr:$AB, u1imm:$T), |
479 |
| - "dmsha2hash $AT, $AB, $T", |
480 |
| - [(set v1024i1:$AT, (int_ppc_mma_dmsha2hash v1024i1:$ATi, v1024i1:$AB, timm:$T))]>, |
481 |
| - RegConstraint<"$ATi = $AT">; |
482 |
| - |
483 |
| - def DMSHA3HASH : |
484 |
| - XForm_ATp2_SR5<31, 15, 177, (outs dmrp:$ATp), (ins dmrp:$ATpi , u5imm:$SR), |
485 |
| - "dmsha3hash $ATp, $SR", |
486 |
| - [(set v2048i1:$ATp, (int_ppc_mma_dmsha3hash v2048i1:$ATpi, timm:$SR))]>, |
487 |
| - RegConstraint<"$ATpi = $ATp">; |
488 |
| - |
489 |
| - def DMXXSHAPAD : |
490 |
| - XX2Form_AT3_XB6_ID2_E1_BL2<60, 421, (outs dmr:$AT), |
491 |
| - (ins dmr:$ATi, vsrc:$XB, u2imm:$ID, u1imm:$E, u2imm:$BL), |
492 |
| - "dmxxshapad $AT, $XB, $ID, $E, $BL", []>, |
493 |
| - RegConstraint<"$ATi = $AT">; |
494 |
| -} |
| 506 | +//---------------------------- Anonymous Patterns ----------------------------// |
| 507 | +// Predicate combinations available: |
| 508 | +// [MMA, IsISAFuture] |
| 509 | +// [MMA, PrefixInstrs, IsISAFuture] |
495 | 510 |
|
496 |
| -// MMA+ Intrinsics |
497 | 511 | let Predicates = [MMA, IsISAFuture] in {
|
498 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvi8gerx4 v256i1:$XAp, v16i8:$XB)), |
| 512 | + // MMA+ Intrinsics |
| 513 | + def : Pat<(v1024i1(int_ppc_mma_dmxvi8gerx4 v256i1:$XAp, v16i8:$XB)), |
499 | 514 | (DMXVI8GERX4 $XAp, RCCp.BToVSRC)>;
|
500 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvi8gerx4pp v1024i1:$ATi, v256i1:$XAp, v16i8:$XB)), |
| 515 | + def : Pat<(v1024i1(int_ppc_mma_dmxvi8gerx4pp v1024i1:$ATi, v256i1:$XAp, |
| 516 | + v16i8:$XB)), |
501 | 517 | (DMXVI8GERX4PP $ATi, $XAp, RCCp.BToVSRC)>;
|
502 |
| - |
503 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvi8gerx4spp v1024i1:$ATi, v256i1:$XAp, v16i8:$XB)), |
| 518 | + def : Pat<(v1024i1(int_ppc_mma_dmxvi8gerx4spp v1024i1:$ATi, v256i1:$XAp, |
| 519 | + v16i8:$XB)), |
504 | 520 | (DMXVI8GERX4SPP $ATi, $XAp, RCCp.BToVSRC)>;
|
505 |
| - |
506 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvbf16gerx2 v256i1:$XAp, v16i8:$XB)), |
| 521 | + def : Pat<(v1024i1(int_ppc_mma_dmxvbf16gerx2 v256i1:$XAp, v16i8:$XB)), |
507 | 522 | (DMXVBF16GERX2 $XAp, RCCp.BToVSRC)>;
|
508 |
| - |
509 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvbf16gerx2pp v1024i1:$ATi, v256i1:$XAp, v16i8:$XB)), |
| 523 | + def : Pat<(v1024i1(int_ppc_mma_dmxvbf16gerx2pp v1024i1:$ATi, v256i1:$XAp, |
| 524 | + v16i8:$XB)), |
510 | 525 | (DMXVBF16GERX2PP $ATi, $XAp, RCCp.BToVSRC)>;
|
511 |
| - |
512 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvbf16gerx2pn v1024i1:$ATi, v256i1:$XAp, v16i8:$XB)), |
| 526 | + def : Pat<(v1024i1(int_ppc_mma_dmxvbf16gerx2pn v1024i1:$ATi, v256i1:$XAp, |
| 527 | + v16i8:$XB)), |
513 | 528 | (DMXVBF16GERX2PN $ATi, $XAp, RCCp.BToVSRC)>;
|
514 |
| - |
515 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvbf16gerx2np v1024i1:$ATi, v256i1:$XAp, v16i8:$XB)), |
| 529 | + def : Pat<(v1024i1(int_ppc_mma_dmxvbf16gerx2np v1024i1:$ATi, v256i1:$XAp, |
| 530 | + v16i8:$XB)), |
516 | 531 | (DMXVBF16GERX2NP $ATi, $XAp, RCCp.BToVSRC)>;
|
517 |
| - |
518 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvbf16gerx2nn v1024i1:$ATi, v256i1:$XAp, v16i8:$XB)), |
| 532 | + def : Pat<(v1024i1(int_ppc_mma_dmxvbf16gerx2nn v1024i1:$ATi, v256i1:$XAp, |
| 533 | + v16i8:$XB)), |
519 | 534 | (DMXVBF16GERX2NN $ATi, $XAp, RCCp.BToVSRC)>;
|
520 |
| - |
521 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvf16gerx2 v256i1:$XAp, v16i8:$XB)), |
| 535 | + def : Pat<(v1024i1(int_ppc_mma_dmxvf16gerx2 v256i1:$XAp, v16i8:$XB)), |
522 | 536 | (DMXVF16GERX2 $XAp, RCCp.BToVSRC)>;
|
523 |
| - |
524 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvf16gerx2pp v1024i1:$ATi, v256i1:$XAp, v16i8:$XB)), |
| 537 | + def : Pat<(v1024i1(int_ppc_mma_dmxvf16gerx2pp v1024i1:$ATi, v256i1:$XAp, |
| 538 | + v16i8:$XB)), |
525 | 539 | (DMXVF16GERX2PP $ATi, $XAp, RCCp.BToVSRC)>;
|
526 |
| - |
527 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvf16gerx2pn v1024i1:$ATi, v256i1:$XAp, v16i8:$XB)), |
| 540 | + def : Pat<(v1024i1(int_ppc_mma_dmxvf16gerx2pn v1024i1:$ATi, v256i1:$XAp, |
| 541 | + v16i8:$XB)), |
528 | 542 | (DMXVF16GERX2PN $ATi, $XAp, RCCp.BToVSRC)>;
|
529 |
| - |
530 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvf16gerx2np v1024i1:$ATi, v256i1:$XAp, v16i8:$XB)), |
| 543 | + def : Pat<(v1024i1(int_ppc_mma_dmxvf16gerx2np v1024i1:$ATi, v256i1:$XAp, |
| 544 | + v16i8:$XB)), |
531 | 545 | (DMXVF16GERX2NP $ATi, $XAp, RCCp.BToVSRC)>;
|
532 |
| - |
533 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxvf16gerx2nn v1024i1:$ATi, v256i1:$XAp, v16i8:$XB)), |
| 546 | + def : Pat<(v1024i1(int_ppc_mma_dmxvf16gerx2nn v1024i1:$ATi, v256i1:$XAp, |
| 547 | + v16i8:$XB)), |
534 | 548 | (DMXVF16GERX2NN $ATi, $XAp, RCCp.BToVSRC)>;
|
| 549 | + |
| 550 | + // Cryptography Intrinsic |
| 551 | + def : Pat<(v1024i1(int_ppc_mma_dmxxshapad v1024i1:$ATi, v16i8:$XB, timm:$ID, |
| 552 | + timm:$E, timm:$BL)), |
| 553 | + (DMXXSHAPAD $ATi, RCCp.BToVSRC, $ID, $E, $BL)>; |
535 | 554 | }
|
536 | 555 |
|
537 | 556 | let Predicates = [MMA, PrefixInstrs, IsISAFuture] in {
|
538 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvi8gerx4 v256i1:$XAp, v16i8:$XB, Msk8Imm:$XMSK, |
539 |
| - Msk4Imm:$YMSK, Msk4Imm:$PMSK)), |
540 |
| - (PMDMXVI8GERX4 $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK, |
541 |
| - Msk4Imm:$YMSK, Msk4Imm:$PMSK)>; |
542 |
| - |
543 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvi8gerx4pp v1024i1:$ATi, v256i1:$XAp, v16i8:$XB, |
544 |
| - Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
545 |
| - Msk4Imm:$PMSK)), |
| 557 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvi8gerx4 v256i1:$XAp, v16i8:$XB, |
| 558 | + Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk4Imm:$PMSK)), |
| 559 | + (PMDMXVI8GERX4 $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
| 560 | + Msk4Imm:$PMSK)>; |
| 561 | + |
| 562 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvi8gerx4pp v1024i1:$ATi, v256i1:$XAp, |
| 563 | + v16i8:$XB, Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk4Imm:$PMSK)), |
546 | 564 | (PMDMXVI8GERX4PP $ATi, $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK,
|
547 |
| - Msk4Imm:$YMSK, Msk4Imm:$PMSK)>; |
| 565 | + Msk4Imm:$YMSK, Msk4Imm:$PMSK)>; |
548 | 566 |
|
549 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvi8gerx4spp v1024i1:$ATi, v256i1:$XAp, v16i8:$XB, |
550 |
| - Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
551 |
| - Msk4Imm:$PMSK)), |
| 567 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvi8gerx4spp v1024i1:$ATi, v256i1:$XAp, |
| 568 | + v16i8:$XB, Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk4Imm:$PMSK)), |
552 | 569 | (PMDMXVI8GERX4SPP $ATi, $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK,
|
553 |
| - Msk4Imm:$YMSK, Msk4Imm:$PMSK)>; |
| 570 | + Msk4Imm:$YMSK, Msk4Imm:$PMSK)>; |
554 | 571 |
|
555 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvbf16gerx2 v256i1:$XAp, v16i8:$XB, Msk8Imm:$XMSK, |
556 |
| - Msk4Imm:$YMSK, Msk2Imm:$PMSK)), |
557 |
| - (PMDMXVBF16GERX2 $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK, |
558 |
| - Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
| 572 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvbf16gerx2 v256i1:$XAp, v16i8:$XB, |
| 573 | + Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk2Imm:$PMSK)), |
| 574 | + (PMDMXVBF16GERX2 $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
| 575 | + Msk2Imm:$PMSK)>; |
559 | 576 |
|
560 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvbf16gerx2pp v1024i1:$ATi, v256i1:$XAp, v16i8:$XB, |
561 |
| - Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
562 |
| - Msk2Imm:$PMSK)), |
| 577 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvbf16gerx2pp v1024i1:$ATi, v256i1:$XAp, |
| 578 | + v16i8:$XB, Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk2Imm:$PMSK)), |
563 | 579 | (PMDMXVBF16GERX2PP $ATi, $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK,
|
564 |
| - Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
| 580 | + Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
565 | 581 |
|
566 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvbf16gerx2pn v1024i1:$ATi, v256i1:$XAp, v16i8:$XB, |
567 |
| - Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
568 |
| - Msk2Imm:$PMSK)), |
| 582 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvbf16gerx2pn v1024i1:$ATi, v256i1:$XAp, |
| 583 | + v16i8:$XB, Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk2Imm:$PMSK)), |
569 | 584 | (PMDMXVBF16GERX2PN $ATi, $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK,
|
570 |
| - Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
| 585 | + Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
571 | 586 |
|
572 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvbf16gerx2np v1024i1:$ATi, v256i1:$XAp, v16i8:$XB, |
573 |
| - Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
574 |
| - Msk2Imm:$PMSK)), |
| 587 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvbf16gerx2np v1024i1:$ATi, v256i1:$XAp, |
| 588 | + v16i8:$XB, Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk2Imm:$PMSK)), |
575 | 589 | (PMDMXVBF16GERX2NP $ATi, $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK,
|
576 |
| - Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
| 590 | + Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
577 | 591 |
|
578 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvbf16gerx2nn v1024i1:$ATi, v256i1:$XAp, v16i8:$XB, |
579 |
| - Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
580 |
| - Msk2Imm:$PMSK)), |
| 592 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvbf16gerx2nn v1024i1:$ATi, v256i1:$XAp, |
| 593 | + v16i8:$XB, Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk2Imm:$PMSK)), |
581 | 594 | (PMDMXVBF16GERX2NN $ATi, $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK,
|
582 |
| - Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
| 595 | + Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
583 | 596 |
|
584 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvf16gerx2 v256i1:$XAp, v16i8:$XB, Msk8Imm:$XMSK, |
585 |
| - Msk4Imm:$YMSK, Msk2Imm:$PMSK)), |
586 |
| - (PMDMXVF16GERX2 $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK, |
587 |
| - Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
| 597 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvf16gerx2 v256i1:$XAp, v16i8:$XB, |
| 598 | + Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk2Imm:$PMSK)), |
| 599 | + (PMDMXVF16GERX2 $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
| 600 | + Msk2Imm:$PMSK)>; |
588 | 601 |
|
589 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvf16gerx2pp v1024i1:$ATi, v256i1:$XAp, v16i8:$XB, |
590 |
| - Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
591 |
| - Msk2Imm:$PMSK)), |
| 602 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvf16gerx2pp v1024i1:$ATi, v256i1:$XAp, |
| 603 | + v16i8:$XB, Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk2Imm:$PMSK)), |
592 | 604 | (PMDMXVF16GERX2PP $ATi, $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK,
|
593 |
| - Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
| 605 | + Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
594 | 606 |
|
595 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvf16gerx2pn v1024i1:$ATi, v256i1:$XAp, v16i8:$XB, |
596 |
| - Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
597 |
| - Msk2Imm:$PMSK)), |
| 607 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvf16gerx2pn v1024i1:$ATi, v256i1:$XAp, |
| 608 | + v16i8:$XB, Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk2Imm:$PMSK)), |
598 | 609 | (PMDMXVF16GERX2PN $ATi, $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK,
|
599 |
| - Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
| 610 | + Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
600 | 611 |
|
601 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvf16gerx2np v1024i1:$ATi, v256i1:$XAp, v16i8:$XB, |
602 |
| - Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
603 |
| - Msk2Imm:$PMSK)), |
| 612 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvf16gerx2np v1024i1:$ATi, v256i1:$XAp, |
| 613 | + v16i8:$XB, Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk2Imm:$PMSK)), |
604 | 614 | (PMDMXVF16GERX2NP $ATi, $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK,
|
605 |
| - Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
| 615 | + Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
606 | 616 |
|
607 |
| - def : Pat<(v1024i1 (int_ppc_mma_pmdmxvf16gerx2nn v1024i1:$ATi, v256i1:$XAp, v16i8:$XB, |
608 |
| - Msk8Imm:$XMSK, Msk4Imm:$YMSK, |
609 |
| - Msk2Imm:$PMSK)), |
| 617 | + def : Pat<(v1024i1(int_ppc_mma_pmdmxvf16gerx2nn v1024i1:$ATi, v256i1:$XAp, |
| 618 | + v16i8:$XB, Msk8Imm:$XMSK, Msk4Imm:$YMSK, Msk2Imm:$PMSK)), |
610 | 619 | (PMDMXVF16GERX2NN $ATi, $XAp, RCCp.BToVSRC, Msk8Imm:$XMSK,
|
611 |
| - Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
| 620 | + Msk4Imm:$YMSK, Msk2Imm:$PMSK)>; |
612 | 621 | }
|
613 | 622 |
|
614 |
| -// Cryptography Intrinsic |
615 |
| -let Predicates = [IsISAFuture] in { |
616 |
| - def : Pat<(v1024i1 (int_ppc_mma_dmxxshapad v1024i1:$ATi, v16i8:$XB, timm:$ID, |
617 |
| - timm:$E, timm:$BL)), (DMXXSHAPAD $ATi, RCCp.BToVSRC, $ID, $E, $BL)>; |
618 |
| -} |
619 | 623 |
|
620 |
| -// MMA+ Instruction aliases |
621 |
| -let Predicates = [IsISAFuture] in { |
| 624 | +//---------------------------- Instruction aliases ---------------------------// |
| 625 | + |
| 626 | +let Predicates = [MMA, IsISAFuture] in { |
622 | 627 | def : InstAlias<"dmsha256hash $AT, $AB",
|
623 | 628 | (DMSHA2HASH dmr:$AT, dmr:$AB, 0)>;
|
624 | 629 |
|
|
0 commit comments