================
@@ -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

Reply via email to