@@ -578,204 +578,270 @@ let Predicates = [HasStdExtP, IsRV64] in {
578578 def PPACKT_W : RVPBinary_rr<0b0110, 0b01, 0b100, "ppackt.w">;
579579 def PACKT_RV64 : RVPBinary_rr<0b0110, 0b11, 0b100, "packt">;
580580} // Predicates = [HasStdExtP, IsRV64]
581+
581582let Predicates = [HasStdExtP] in {
582583 def PM2ADD_H : RVPBinary_rr<0b0000, 0b00, 0b101, "pm2add.h">;
583584 def PM4ADD_B : RVPBinary_rr<0b0000, 0b10, 0b101, "pm4add.b">;
584- def PM2ADDA_H : RVPBinary_rr<0b0001, 0b00, 0b101, "pm2adda.h">;
585- def PM4ADDA_B : RVPBinary_rr<0b0001, 0b10, 0b101, "pm4adda.b">;
585+
586+ def PM2ADDA_H : RVPTernary_rrr<0b0001, 0b00, 0b101, "pm2adda.h">;
587+ def PM4ADDA_B : RVPTernary_rrr<0b0001, 0b10, 0b101, "pm4adda.b">;
588+
586589 def PM2ADD_HX : RVPBinary_rr<0b0010, 0b00, 0b101, "pm2add.hx">;
587- def PM2ADDA_HX : RVPBinary_rr<0b0011, 0b00, 0b101, "pm2adda.hx">;
590+
591+ def PM2ADDA_HX : RVPTernary_rrr<0b0011, 0b00, 0b101, "pm2adda.hx">;
588592
589593 def PM2ADDU_H : RVPBinary_rr<0b0100, 0b00, 0b101, "pm2addu.h">;
590594 def PM4ADDU_B : RVPBinary_rr<0b0100, 0b10, 0b101, "pm4addu.b">;
591- def PM2ADDAU_H : RVPBinary_rr<0b0101, 0b00, 0b101, "pm2addau.h">;
592- def PM4ADDAU_B : RVPBinary_rr<0b0101, 0b10, 0b101, "pm4addau.b">;
595+
596+ def PM2ADDAU_H : RVPTernary_rrr<0b0101, 0b00, 0b101, "pm2addau.h">;
597+ def PM4ADDAU_B : RVPTernary_rrr<0b0101, 0b10, 0b101, "pm4addau.b">;
598+
593599 def PMQ2ADD_H : RVPBinary_rr<0b0110, 0b00, 0b101, "pmq2add.h">;
594600 def PMQR2ADD_H : RVPBinary_rr<0b0110, 0b10, 0b101, "pmqr2add.h">;
595- def PMQ2ADDA_H : RVPBinary_rr<0b0111, 0b00, 0b101, "pmq2adda.h">;
596- def PMQR2ADDA_H : RVPBinary_rr<0b0111, 0b10, 0b101, "pmqr2adda.h">;
601+
602+ def PMQ2ADDA_H : RVPTernary_rrr<0b0111, 0b00, 0b101, "pmq2adda.h">;
603+ def PMQR2ADDA_H : RVPTernary_rrr<0b0111, 0b10, 0b101, "pmqr2adda.h">;
597604
598605 def PM2SUB_H : RVPBinary_rr<0b1000, 0b00, 0b101, "pm2sub.h">;
599606 def PM2SADD_H : RVPBinary_rr<0b1000, 0b10, 0b101, "pm2sadd.h">;
600- def PM2SUBA_H : RVPBinary_rr<0b1001, 0b00, 0b101, "pm2suba.h">;
607+
608+ def PM2SUBA_H : RVPTernary_rrr<0b1001, 0b00, 0b101, "pm2suba.h">;
609+
601610 def PM2SUB_HX : RVPBinary_rr<0b1010, 0b00, 0b101, "pm2sub.hx">;
602611 def PM2SADD_HX : RVPBinary_rr<0b1010, 0b10, 0b101, "pm2sadd.hx">;
603- def PM2SUBA_HX : RVPBinary_rr<0b1011, 0b00, 0b101, "pm2suba.hx">;
612+
613+ def PM2SUBA_HX : RVPTernary_rrr<0b1011, 0b00, 0b101, "pm2suba.hx">;
604614
605615 def PM2ADDSU_H : RVPBinary_rr<0b1100, 0b00, 0b101, "pm2addsu.h">;
606616 def PM4ADDSU_B : RVPBinary_rr<0b1100, 0b10, 0b101, "pm4addsu.b">;
617+
607618 def PM2ADDASU_H : RVPBinary_rr<0b1101, 0b00, 0b101, "pm2addasu.h">;
608619 def PM4ADDASU_B : RVPBinary_rr<0b1101, 0b10, 0b101, "pm4addasu.b">;
609620} // Predicates = [HasStdExtP]
621+
610622let Predicates = [HasStdExtP, IsRV32], DecoderNamespace = "RV32Only" in {
611623 def MQACC_H01 : RVPBinary_rr<0b1111, 0b00, 0b101, "mqacc.h01">;
612624 def MQRACC_H01 : RVPBinary_rr<0b1111, 0b10, 0b101, "mqracc.h01">;
613625} // // Predicates = [HasStdExtP, IsRV32], DecoderNamespace = "RV32Only"
614626let Predicates = [HasStdExtP, IsRV64] in {
615627 def PM2ADD_W : RVPBinary_rr<0b0000, 0b01, 0b101, "pm2add.w">;
616628 def PM4ADD_H : RVPBinary_rr<0b0000, 0b11, 0b101, "pm4add.h">;
617- def PM2ADDA_W : RVPBinary_rr<0b0001, 0b01, 0b101, "pm2adda.w">;
618- def PM4ADDA_H : RVPBinary_rr<0b0001, 0b11, 0b101, "pm4adda.h">;
629+
630+ def PM2ADDA_W : RVPTernary_rrr<0b0001, 0b01, 0b101, "pm2adda.w">;
631+ def PM4ADDA_H : RVPTernary_rrr<0b0001, 0b11, 0b101, "pm4adda.h">;
632+
619633 def PM2ADD_WX : RVPBinary_rr<0b0010, 0b01, 0b101, "pm2add.wx">;
620- def PM2ADDA_WX : RVPBinary_rr<0b0011, 0b01, 0b101, "pm2adda.wx">;
634+
635+ def PM2ADDA_WX : RVPTernary_rrr<0b0011, 0b01, 0b101, "pm2adda.wx">;
621636
622637 def PM2ADDU_W : RVPBinary_rr<0b0100, 0b01, 0b101, "pm2addu.w">;
623638 def PM4ADDU_H : RVPBinary_rr<0b0100, 0b11, 0b101, "pm4addu.h">;
624- def PM2ADDAU_W : RVPBinary_rr<0b0101, 0b01, 0b101, "pm2addau.w">;
625- def PM4ADDAU_H : RVPBinary_rr<0b0101, 0b11, 0b101, "pm4addau.h">;
639+
640+ def PM2ADDAU_W : RVPTernary_rrr<0b0101, 0b01, 0b101, "pm2addau.w">;
641+ def PM4ADDAU_H : RVPTernary_rrr<0b0101, 0b11, 0b101, "pm4addau.h">;
642+
626643 def PMQ2ADD_W : RVPBinary_rr<0b0110, 0b01, 0b101, "pmq2add.w">;
627644 def PMQR2ADD_W : RVPBinary_rr<0b0110, 0b11, 0b101, "pmqr2add.w">;
628- def PMQ2ADDA_W : RVPBinary_rr<0b0111, 0b01, 0b101, "pmq2adda.w">;
629- def PMQR2ADDA_W : RVPBinary_rr<0b0111, 0b11, 0b101, "pmqr2adda.w">;
645+
646+ def PMQ2ADDA_W : RVPTernary_rrr<0b0111, 0b01, 0b101, "pmq2adda.w">;
647+ def PMQR2ADDA_W : RVPTernary_rrr<0b0111, 0b11, 0b101, "pmqr2adda.w">;
630648
631649 def PM2SUB_W : RVPBinary_rr<0b1000, 0b01, 0b101, "pm2sub.w">;
632- def PM2SUBA_W : RVPBinary_rr<0b1001, 0b01, 0b101, "pm2suba.w">;
650+
651+ def PM2SUBA_W : RVPTernary_rrr<0b1001, 0b01, 0b101, "pm2suba.w">;
652+
633653 def PM2SUB_WX : RVPBinary_rr<0b1010, 0b01, 0b101, "pm2sub.wx">;
654+
634655 def PM2SUBA_WX : RVPBinary_rr<0b1011, 0b01, 0b101, "pm2suba.wx">;
635656
636657 def PM2ADDSU_W : RVPBinary_rr<0b1100, 0b01, 0b101, "pm2addsu.w">;
637658 def PM4ADDSU_H : RVPBinary_rr<0b1100, 0b11, 0b101, "pm4addsu.h">;
638- def PM2ADDASU_W : RVPBinary_rr<0b1101, 0b01, 0b101, "pm2addasu.w">;
639- def PM4ADDASU_H : RVPBinary_rr<0b1101, 0b11, 0b101, "pm4addasu.h">;
640659
641- def PMQACC_W_H01 : RVPBinary_rr<0b1111, 0b00, 0b101, "pmqacc.w.h01">;
642- def MQACC_W01 : RVPBinary_rr<0b1111, 0b01, 0b101, "mqacc.w01">;
643- def PMQRACC_W_H01 : RVPBinary_rr<0b1111, 0b10, 0b101, "pmqracc.w.h01">;
644- def MQRACC_W01 : RVPBinary_rr<0b1111, 0b11, 0b101, "mqracc.w01">;
660+ def PM2ADDASU_W : RVPTernary_rrr<0b1101, 0b01, 0b101, "pm2addasu.w">;
661+ def PM4ADDASU_H : RVPTernary_rrr<0b1101, 0b11, 0b101, "pm4addasu.h">;
662+
663+ def PMQACC_W_H01 : RVPTernary_rrr<0b1111, 0b00, 0b101, "pmqacc.w.h01">;
664+ def MQACC_W01 : RVPTernary_rrr<0b1111, 0b01, 0b101, "mqacc.w01">;
665+
666+ def PMQRACC_W_H01 : RVPTernary_rrr<0b1111, 0b10, 0b101, "pmqracc.w.h01">;
667+ def MQRACC_W01 : RVPTernary_rrr<0b1111, 0b11, 0b101, "mqracc.w01">;
645668} // Predicates = [HasStdExtP, IsRV64]
669+
646670let Predicates = [HasStdExtP] in {
647671 def PAS_HX : RVPBinary_rr<0b0000, 0b00, 0b110, "pas.hx">;
648672 def PSA_HX : RVPBinary_rr<0b0000, 0b10, 0b110, "psa.hx">;
673+
649674 def PSAS_HX : RVPBinary_rr<0b0010, 0b00, 0b110, "psas.hx">;
650675 def PSSA_HX : RVPBinary_rr<0b0010, 0b10, 0b110, "pssa.hx">;
651676
677+ def PAAS_HX : RVPBinary_rr<0b0011, 0b00, 0b110, "paas.hx">;
678+ def PASA_HX : RVPBinary_rr<0b0011, 0b10, 0b110, "pasa.hx">;
679+
652680 def PMSEQ_H : RVPBinary_rr<0b1000, 0b00, 0b110, "pmseq.h">;
653681 def PMSEQ_B : RVPBinary_rr<0b1000, 0b10, 0b110, "pmseq.b">;
682+
654683 def PMSLT_H : RVPBinary_rr<0b1010, 0b00, 0b110, "pmslt.h">;
655684 def PMSLT_B : RVPBinary_rr<0b1010, 0b10, 0b110, "pmslt.b">;
685+
656686 def PMSLTU_H : RVPBinary_rr<0b1011, 0b00, 0b110, "pmsltu.h">;
657687 def PMSLTU_B : RVPBinary_rr<0b1011, 0b10, 0b110, "pmsltu.b">;
658688
659689 def PMIN_H : RVPBinary_rr<0b1100, 0b00, 0b110, "pmin.h">;
660690 def PMIN_B : RVPBinary_rr<0b1100, 0b10, 0b110, "pmin.b">;
691+
661692 def PMINU_H : RVPBinary_rr<0b1101, 0b00, 0b110, "pminu.h">;
662693 def PMINU_B : RVPBinary_rr<0b1101, 0b10, 0b110, "pminu.b">;
694+
663695 def PMAX_H : RVPBinary_rr<0b1110, 0b00, 0b110, "pmax.h">;
664696 def PMAX_B : RVPBinary_rr<0b1110, 0b10, 0b110, "pmax.b">;
697+
665698 def PMAXU_H : RVPBinary_rr<0b1111, 0b00, 0b110, "pmaxu.h">;
666699 def PMAXU_B : RVPBinary_rr<0b1111, 0b10, 0b110, "pmaxu.b">;
667700} // Predicates = [HasStdExtP]
668701let Predicates = [HasStdExtP, IsRV32], DecoderNamespace = "RV32Only" in {
669702 def MSEQ : RVPBinary_rr<0b1000, 0b01, 0b110, "mseq">;
703+
670704 def MSLT : RVPBinary_rr<0b1010, 0b01, 0b110, "mslt">;
705+
671706 def MSLTU : RVPBinary_rr<0b1011, 0b01, 0b110, "msltu">;
672707} // Predicates = [HasStdExtP, IsRV32], DecoderNamespace = "RV32Only"
673708let Predicates = [HasStdExtP, IsRV64] in {
674709 def PAS_WX : RVPBinary_rr<0b0000, 0b01, 0b110, "pas.wx">;
675710 def PSA_WX : RVPBinary_rr<0b0000, 0b11, 0b110, "psa.wx">;
711+
676712 def PSAS_WX : RVPBinary_rr<0b0010, 0b01, 0b110, "psas.wx">;
677713 def PSSA_WX : RVPBinary_rr<0b0010, 0b11, 0b110, "pssa.wx">;
714+
678715 def PAAS_WX : RVPBinary_rr<0b0011, 0b01, 0b110, "paas.wx">;
679716 def PASA_WX : RVPBinary_rr<0b0011, 0b11, 0b110, "pasa.wx">;
680717
681718 def PMSEQ_W : RVPBinary_rr<0b1000, 0b01, 0b110, "pmseq.w">;
719+
682720 def PMSLT_W : RVPBinary_rr<0b1010, 0b01, 0b110, "pmslt.w">;
721+
683722 def PMSLTU_W : RVPBinary_rr<0b1011, 0b01, 0b110, "pmsltu.w">;
684723
685724 def PMIN_W : RVPBinary_rr<0b1100, 0b01, 0b110, "pmin.w">;
725+
686726 def PMINU_W : RVPBinary_rr<0b1101, 0b01, 0b110, "pminu.w">;
727+
687728 def PMAX_W : RVPBinary_rr<0b1110, 0b01, 0b110, "pmax.w">;
729+
688730 def PMAXU_W : RVPBinary_rr<0b1111, 0b01, 0b110, "pmaxu.w">;
689731} // Predicates = [HasStdExtP, IsRV64]
690732
691-
692733let Predicates = [HasStdExtP] in {
693734 def PMULH_H : RVPBinary_rr<0b0000, 0b00, 0b111, "pmulh.h">;
694735 def PMULHR_H : RVPBinary_rr<0b0000, 0b10, 0b111, "pmulhr.h">;
695- def PMHACC_H : RVPBinary_rr<0b0001, 0b00, 0b111, "pmhacc.h">;
696- def PMHRACC_H : RVPBinary_rr<0b0001, 0b10, 0b111, "pmhracc.h">;
736+
737+ def PMHACC_H : RVPTernary_rrr<0b0001, 0b00, 0b111, "pmhacc.h">;
738+ def PMHRACC_H : RVPTernary_rrr<0b0001, 0b10, 0b111, "pmhracc.h">;
739+
697740 def PMULHU_H : RVPBinary_rr<0b0010, 0b00, 0b111, "pmulhu.h">;
698741 def PMULHRU_H : RVPBinary_rr<0b0010, 0b10, 0b111, "pmulhru.h">;
699- def PMHACCU_H : RVPBinary_rr<0b0011, 0b00, 0b111, "pmhaccu.h">;
700- def PMHRACCU_H : RVPBinary_rr<0b0011, 0b10, 0b111, "pmhraccu.h">;
742+
743+ def PMHACCU_H : RVPTernary_rrr<0b0011, 0b00, 0b111, "pmhaccu.h">;
744+ def PMHRACCU_H : RVPTernary_rrr<0b0011, 0b10, 0b111, "pmhraccu.h">;
701745
702746 def PMULH_H_B0 : RVPBinary_rr<0b0100, 0b00, 0b111, "pmulh.h.b0">;
703747 def PMULHSU_H_B0 : RVPBinary_rr<0b0100, 0b10, 0b111, "pmulhsu.h.b0">;
704- def PMHACCU_H_B0 : RVPBinary_rr<0b0101, 0b00, 0b111, "pmhaccu.h.b0">;
705- def PMHACCSU_H_B0 : RVPBinary_rr<0b0101, 0b10, 0b111, "pmhaccsu.h.b0">;
748+
749+ def PMHACC_H_B0 : RVPTernary_rrr<0b0101, 0b00, 0b111, "pmhacc.h.b0">;
750+ def PMHACCSU_H_B0 : RVPTernary_rrr<0b0101, 0b10, 0b111, "pmhaccsu.h.b0">;
751+
706752 def PMULH_H_B1 : RVPBinary_rr<0b0110, 0b00, 0b111, "pmulh.h.b1">;
707753 def PMULHSU_H_B1 : RVPBinary_rr<0b0110, 0b10, 0b111, "pmulhsu.h.b1">;
708- def PMHACC_H_B1 : RVPBinary_rr<0b0111, 0b00, 0b111, "pmhacc.h.b1">;
709- def PMHACCSU_H_B1 : RVPBinary_rr<0b0111, 0b10, 0b111, "pmhaccsu.h.b1">;
754+
755+ def PMHACC_H_B1 : RVPTernary_rrr<0b0111, 0b00, 0b111, "pmhacc.h.b1">;
756+ def PMHACCSU_H_B1 : RVPTernary_rrr<0b0111, 0b10, 0b111, "pmhaccsu.h.b1">;
710757
711758 def PMULHSU_H : RVPBinary_rr<0b1000, 0b00, 0b111, "pmulhsu.h">;
712759 def PMULHRSU_H : RVPBinary_rr<0b1000, 0b10, 0b111, "pmulhrsu.h">;
760+
713761 def PMHACCSU_H : RVPBinary_rr<0b1001, 0b00, 0b111, "pmhaccsu.h">;
714762 def PMHRACCSU_H : RVPBinary_rr<0b1001, 0b10, 0b111, "pmhraccsu.h">;
763+
715764 def PMULQ_H : RVPBinary_rr<0b1010, 0b00, 0b111, "pmulq.h">;
716765 def PMULQR_H : RVPBinary_rr<0b1010, 0b10, 0b111, "pmulqr.h">;
717766} // Predicates = [HasStdExtP]
718-
719767let Predicates = [HasStdExtP, IsRV32], DecoderNamespace = "RV32Only" in {
720768 def MULHR : RVPBinary_rr<0b0000, 0b11, 0b111, "mulhr">;
721- def MHACC : RVPBinary_rr<0b0001, 0b01, 0b111, "mhacc">;
722- def MHRACC : RVPBinary_rr<0b0001, 0b11, 0b111, "mhracc">;
769+
770+ def MHACC : RVPTernary_rrr<0b0001, 0b01, 0b111, "mhacc">;
771+ def MHRACC : RVPTernary_rrr<0b0001, 0b11, 0b111, "mhracc">;
772+
723773 def MULHRU : RVPBinary_rr<0b0010, 0b11, 0b111, "mulhru">;
724- def MHACCU : RVPBinary_rr<0b0011, 0b01, 0b111, "mhaccu">;
725- def MHRACCU : RVPBinary_rr<0b0011, 0b11, 0b111, "mhraccu">;
774+
775+ def MHACCU : RVPTernary_rrr<0b0011, 0b01, 0b111, "mhaccu">;
776+ def MHRACCU : RVPTernary_rrr<0b0011, 0b11, 0b111, "mhraccu">;
726777
727778 def MULH_H0 : RVPBinary_rr<0b0100, 0b01, 0b111, "mulh.h0">;
728779 def MULHSU_H0 : RVPBinary_rr<0b0100, 0b11, 0b111, "mulhsu.h0">;
729- def MHACC_H0 : RVPBinary_rr<0b0101, 0b01, 0b111, "mhacc.h0">;
730- def MHACCSU_H0 : RVPBinary_rr<0b0101, 0b11, 0b111, "mhaccsu.h0">;
780+
781+ def MHACC_H0 : RVPTernary_rrr<0b0101, 0b01, 0b111, "mhacc.h0">;
782+ def MHACCSU_H0 : RVPTernary_rrr<0b0101, 0b11, 0b111, "mhaccsu.h0">;
783+
731784 def MULH_H1 : RVPBinary_rr<0b0110, 0b01, 0b111, "mulh.h1">;
732785 def MULHSU_H1 : RVPBinary_rr<0b0110, 0b11, 0b111, "mulhsu.h1">;
733- def MHACC_H1 : RVPBinary_rr<0b0111, 0b01, 0b111, "mhacc.h1">;
734- def MHACCSU_H1 : RVPBinary_rr<0b0111, 0b11, 0b111, "mhaccsu.h1">;
735786
736- def MULHRSU_H : RVPBinary_rr<0b1000, 0b11, 0b111, "mulhrsu.h">;
737- def MHACCSU : RVPBinary_rr<0b1001, 0b01, 0b111, "mhaccsu">;
738- def MHRACCSU : RVPBinary_rr<0b1001, 0b11, 0b111, "mhraccsu">;
787+ def MHACC_H1 : RVPTernary_rrr<0b0111, 0b01, 0b111, "mhacc.h1">;
788+ def MHACCSU_H1 : RVPTernary_rrr<0b0111, 0b11, 0b111, "mhaccsu.h1">;
789+
790+ def MULHRSU : RVPBinary_rr<0b1000, 0b11, 0b111, "mulhrsu">;
791+
792+ def MHACCSU : RVPTernary_rrr<0b1001, 0b01, 0b111, "mhaccsu">;
793+ def MHRACCSU : RVPTernary_rrr<0b1001, 0b11, 0b111, "mhraccsu">;
794+
739795 def MULQ : RVPBinary_rr<0b1010, 0b01, 0b111, "mulq">;
740796 def MULQR : RVPBinary_rr<0b1010, 0b11, 0b111, "mulqr">;
741797
742- def MQACC_H00 : RVPBinary_rr<0b1101, 0b00, 0b111, "mqacc.h00">;
743- def MQRACC_H00 : RVPBinary_rr<0b1101, 0b10, 0b111, "mqracc.h00">;
744- def MQACC_H11 : RVPBinary_rr<0b1111, 0b00, 0b111, "mqacc.h11">;
745- def MQRACC_H11 : RVPBinary_rr<0b1111, 0b10, 0b111, "mqracc.h11">;
798+ def MQACC_H00 : RVPTernary_rrr<0b1101, 0b00, 0b111, "mqacc.h00">;
799+ def MQRACC_H00 : RVPTernary_rrr<0b1101, 0b10, 0b111, "mqracc.h00">;
800+
801+ def MQACC_H11 : RVPTernary_rrr<0b1111, 0b00, 0b111, "mqacc.h11">;
802+ def MQRACC_H11 : RVPTernary_rrr<0b1111, 0b10, 0b111, "mqracc.h11">;
746803} // Predicates = [HasStdExtP, IsRV32], DecoderNamespace = "RV32Only" in
747804let Predicates = [HasStdExtP, IsRV64] in {
748805 def PMULH_W : RVPBinary_rr<0b0000, 0b01, 0b111, "pmulh.w">;
749806 def PMULHR_W : RVPBinary_rr<0b0000, 0b11, 0b111, "pmulhr.w">;
750- def PMHACC_W : RVPBinary_rr<0b0001, 0b01, 0b111, "pmhacc.w">;
751- def PMHRACC_W : RVPBinary_rr<0b0001, 0b11, 0b111, "pmhracc.w">;
807+
808+ def PMHACC_W : RVPTernary_rrr<0b0001, 0b01, 0b111, "pmhacc.w">;
809+ def PMHRACC_W : RVPTernary_rrr<0b0001, 0b11, 0b111, "pmhracc.w">;
810+
752811 def PMULHU_W : RVPBinary_rr<0b0010, 0b01, 0b111, "pmulhu.w">;
753812 def PMULHRU_W : RVPBinary_rr<0b0010, 0b11, 0b111, "pmulhru.w">;
754- def PMHACCU_W : RVPBinary_rr<0b0011, 0b01, 0b111, "pmhaccu.w">;
755- def PMHRACCU_W : RVPBinary_rr<0b0011, 0b11, 0b111, "pmhraccu.w">;
813+
814+ def PMHACCU_W : RVPTernary_rrr<0b0011, 0b01, 0b111, "pmhaccu.w">;
815+ def PMHRACCU_W : RVPTernary_rrr<0b0011, 0b11, 0b111, "pmhraccu.w">;
756816
757817 def PMULH_W_H0 : RVPBinary_rr<0b0100, 0b01, 0b111, "pmulh.w.h0">;
758818 def PMULHSU_W_H0 : RVPBinary_rr<0b0100, 0b11, 0b111, "pmulhsu.w.h0">;
819+
759820 def PMHACC_W_H0 : RVPBinary_rr<0b0101, 0b01, 0b111, "pmhacc.w.h0">;
760821 def PMHACCSU_W_H0 : RVPBinary_rr<0b0101, 0b11, 0b111, "pmhaccsu.w.h0">;
822+
761823 def PMULH_W_H1 : RVPBinary_rr<0b0110, 0b01, 0b111, "pmulh.w.h1">;
762824 def PMULHSU_W_H1 : RVPBinary_rr<0b0110, 0b11, 0b111, "pmulhsu.w.h1">;
763- def PMHACC_W_H1 : RVPBinary_rr<0b0111, 0b01, 0b111, "pmhacc.w.h1">;
764- def PMHACCSU_W_H1 : RVPBinary_rr<0b0111, 0b11, 0b111, "pmhaccsu.w.h1">;
825+
826+ def PMHACC_W_H1 : RVPTernary_rrr<0b0111, 0b01, 0b111, "pmhacc.w.h1">;
827+ def PMHACCSU_W_H1 : RVPTernary_rrr<0b0111, 0b11, 0b111, "pmhaccsu.w.h1">;
765828
766829 def PMULHSU_W : RVPBinary_rr<0b1000, 0b01, 0b111, "pmulhsu.w">;
767830 def PMULHRSU_W : RVPBinary_rr<0b1000, 0b11, 0b111, "pmulhrsu.w">;
768- def PMHACCSU_W : RVPBinary_rr<0b1001, 0b01, 0b111, "pmhaccsu.w">;
769- def PMHRACCSU_W : RVPBinary_rr<0b1001, 0b11, 0b111, "pmhraccsu.w">;
831+
832+ def PMHACCSU_W : RVPTernary_rrr<0b1001, 0b01, 0b111, "pmhaccsu.w">;
833+ def PMHRACCSU_W : RVPTernary_rrr<0b1001, 0b11, 0b111, "pmhraccsu.w">;
834+
770835 def PMULQ_W : RVPBinary_rr<0b1010, 0b01, 0b111, "pmulq.w">;
771836 def PMULQR_W : RVPBinary_rr<0b1010, 0b11, 0b111, "pmulqr.w">;
772837
773- def PMQACC_W_H00 : RVPBinary_rr<0b1101, 0b00, 0b111, "pmqacc.w.h00">;
774- def MQACC_W00 : RVPBinary_rr<0b1101, 0b01, 0b111, "mqacc.w00">;
775- def PMQRACC_W_H00 : RVPBinary_rr<0b1101, 0b10, 0b111, "pmqracc.w.h00">;
776- def MQRACC_W00 : RVPBinary_rr<0b1101, 0b11, 0b111, "mqracc.w00">;
777- def PMQACC_W_H11 : RVPBinary_rr<0b1111, 0b00, 0b111, "pmqacc.w.h11">;
778- def MQACC_W11 : RVPBinary_rr<0b1111, 0b01, 0b111, "mqacc.w11">;
779- def PMQRACC_W_H11 : RVPBinary_rr<0b1111, 0b10, 0b111, "pmqracc.w.h11">;
780- def MQRACC_W11 : RVPBinary_rr<0b1111, 0b11, 0b111, "mqracc.w11">;
838+ def PMQACC_W_H00 : RVPTernary_rrr<0b1101, 0b00, 0b111, "pmqacc.w.h00">;
839+ def MQACC_W00 : RVPTernary_rrr<0b1101, 0b01, 0b111, "mqacc.w00">;
840+ def PMQRACC_W_H00 : RVPTernary_rrr<0b1101, 0b10, 0b111, "pmqracc.w.h00">;
841+ def MQRACC_W00 : RVPTernary_rrr<0b1101, 0b11, 0b111, "mqracc.w00">;
842+
843+ def PMQACC_W_H11 : RVPTernary_rrr<0b1111, 0b00, 0b111, "pmqacc.w.h11">;
844+ def MQACC_W11 : RVPTernary_rrr<0b1111, 0b01, 0b111, "mqacc.w11">;
845+ def PMQRACC_W_H11 : RVPTernary_rrr<0b1111, 0b10, 0b111, "pmqracc.w.h11">;
846+ def MQRACC_W11 : RVPTernary_rrr<0b1111, 0b11, 0b111, "mqracc.w11">;
781847} // Predicates = [HasStdExtP, IsRV64]
0 commit comments