================ @@ -559,3 +559,204 @@ let Predicates = [HasStdExtP, IsRV64] in { def PPACKT_W : RVPBinary_rr<0b0110, 0b01, 0b100, "ppackt.w">; def PACKT_RV64 : RVPBinary_rr<0b0110, 0b11, 0b100, "packt">; } // Predicates = [HasStdExtP, IsRV64] +let Predicates = [HasStdExtP] in { + def PM2ADD_H : RVPBinary_rr<0b0000, 0b00, 0b101, "pm2add.h">; + def PM4ADD_B : RVPBinary_rr<0b0000, 0b10, 0b101, "pm4add.b">; + def PM2ADDA_H : RVPBinary_rr<0b0001, 0b00, 0b101, "pm2adda.h">; ---------------- topperc wrote:
PM2ADDA_H should use RVPTernary_rrr because it has bit 12 and bit 27(the R bit) set. ``` For the last format, when bit R = 1, an instruction both reads and writes the destination operand. Usually this is done for an accumulate operation, although there are some other instances, such as SRX (Shift Right Extended) and MVM (Move Masked). ``` https://github.com/llvm/llvm-project/pull/150379 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits