[RISCV] Support Remaining P Extension Instructions for RV32/64 (#150379)

This patch implements pages 15-17 from
jhauser.us/RISCV/ext-P/RVP-instrEncodings-015.pdf

Documentation:
jhauser.us/RISCV/ext-P/RVP-baseInstrs-014.pdf
jhauser.us/RISCV/ext-P/RVP-instrEncodings-015.pdf
This commit is contained in:
Qihan Cai 2025-08-20 22:54:07 +10:00 committed by GitHub
parent 5a929a4249
commit 5f0515debd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 962 additions and 9 deletions

View File

@ -210,7 +210,7 @@
// CHECK-NEXT: xwchc 2.2 'Xwchc' (WCH/QingKe additional compressed opcodes)
// CHECK-EMPTY:
// CHECK-NEXT: Experimental extensions
// CHECK-NEXT: p 0.14 'P' ('Base P' (Packed SIMD))
// CHECK-NEXT: p 0.15 'P' ('Base P' (Packed SIMD))
// CHECK-NEXT: zicfilp 1.0 'Zicfilp' (Landing pad)
// CHECK-NEXT: zicfiss 1.0 'Zicfiss' (Shadow stack)
// CHECK-NEXT: zalasr 0.1 'Zalasr' (Load-Acquire and Store-Release Instructions)

View File

@ -1069,7 +1069,7 @@ def HasStdExtSmctrOrSsctr : Predicate<"Subtarget->hasStdExtSmctrOrSsctr()">,
// Packed SIMD Extensions
def FeatureStdExtP
: RISCVExperimentalExtension<0, 14,
: RISCVExperimentalExtension<0, 15,
"'Base P' (Packed SIMD)">;
def HasStdExtP : Predicate<"Subtarget->hasStdExtP()">,
AssemblerPredicate<(all_of FeatureStdExtP),

View File

@ -597,6 +597,273 @@ let Predicates = [HasStdExtP, IsRV64] in {
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 : RVPTernary_rrr<0b0001, 0b00, 0b101, "pm2adda.h">;
def PM4ADDA_B : RVPTernary_rrr<0b0001, 0b10, 0b101, "pm4adda.b">;
def PM2ADD_HX : RVPBinary_rr<0b0010, 0b00, 0b101, "pm2add.hx">;
def PM2ADDA_HX : RVPTernary_rrr<0b0011, 0b00, 0b101, "pm2adda.hx">;
def PM2ADDU_H : RVPBinary_rr<0b0100, 0b00, 0b101, "pm2addu.h">;
def PM4ADDU_B : RVPBinary_rr<0b0100, 0b10, 0b101, "pm4addu.b">;
def PM2ADDAU_H : RVPTernary_rrr<0b0101, 0b00, 0b101, "pm2addau.h">;
def PM4ADDAU_B : RVPTernary_rrr<0b0101, 0b10, 0b101, "pm4addau.b">;
def PMQ2ADD_H : RVPBinary_rr<0b0110, 0b00, 0b101, "pmq2add.h">;
def PMQR2ADD_H : RVPBinary_rr<0b0110, 0b10, 0b101, "pmqr2add.h">;
def PMQ2ADDA_H : RVPTernary_rrr<0b0111, 0b00, 0b101, "pmq2adda.h">;
def PMQR2ADDA_H : RVPTernary_rrr<0b0111, 0b10, 0b101, "pmqr2adda.h">;
def PM2SUB_H : RVPBinary_rr<0b1000, 0b00, 0b101, "pm2sub.h">;
def PM2SADD_H : RVPBinary_rr<0b1000, 0b10, 0b101, "pm2sadd.h">;
def PM2SUBA_H : RVPTernary_rrr<0b1001, 0b00, 0b101, "pm2suba.h">;
def PM2SUB_HX : RVPBinary_rr<0b1010, 0b00, 0b101, "pm2sub.hx">;
def PM2SADD_HX : RVPBinary_rr<0b1010, 0b10, 0b101, "pm2sadd.hx">;
def PM2SUBA_HX : RVPTernary_rrr<0b1011, 0b00, 0b101, "pm2suba.hx">;
def PM2ADDSU_H : RVPBinary_rr<0b1100, 0b00, 0b101, "pm2addsu.h">;
def PM4ADDSU_B : RVPBinary_rr<0b1100, 0b10, 0b101, "pm4addsu.b">;
def PM2ADDASU_H : RVPBinary_rr<0b1101, 0b00, 0b101, "pm2addasu.h">;
def PM4ADDASU_B : RVPBinary_rr<0b1101, 0b10, 0b101, "pm4addasu.b">;
} // Predicates = [HasStdExtP]
let Predicates = [HasStdExtP, IsRV32], DecoderNamespace = "RV32Only" in {
def MQACC_H01 : RVPBinary_rr<0b1111, 0b00, 0b101, "mqacc.h01">;
def MQRACC_H01 : RVPBinary_rr<0b1111, 0b10, 0b101, "mqracc.h01">;
} // // Predicates = [HasStdExtP, IsRV32], DecoderNamespace = "RV32Only"
let Predicates = [HasStdExtP, IsRV64] in {
def PM2ADD_W : RVPBinary_rr<0b0000, 0b01, 0b101, "pm2add.w">;
def PM4ADD_H : RVPBinary_rr<0b0000, 0b11, 0b101, "pm4add.h">;
def PM2ADDA_W : RVPTernary_rrr<0b0001, 0b01, 0b101, "pm2adda.w">;
def PM4ADDA_H : RVPTernary_rrr<0b0001, 0b11, 0b101, "pm4adda.h">;
def PM2ADD_WX : RVPBinary_rr<0b0010, 0b01, 0b101, "pm2add.wx">;
def PM2ADDA_WX : RVPTernary_rrr<0b0011, 0b01, 0b101, "pm2adda.wx">;
def PM2ADDU_W : RVPBinary_rr<0b0100, 0b01, 0b101, "pm2addu.w">;
def PM4ADDU_H : RVPBinary_rr<0b0100, 0b11, 0b101, "pm4addu.h">;
def PM2ADDAU_W : RVPTernary_rrr<0b0101, 0b01, 0b101, "pm2addau.w">;
def PM4ADDAU_H : RVPTernary_rrr<0b0101, 0b11, 0b101, "pm4addau.h">;
def PMQ2ADD_W : RVPBinary_rr<0b0110, 0b01, 0b101, "pmq2add.w">;
def PMQR2ADD_W : RVPBinary_rr<0b0110, 0b11, 0b101, "pmqr2add.w">;
def PMQ2ADDA_W : RVPTernary_rrr<0b0111, 0b01, 0b101, "pmq2adda.w">;
def PMQR2ADDA_W : RVPTernary_rrr<0b0111, 0b11, 0b101, "pmqr2adda.w">;
def PM2SUB_W : RVPBinary_rr<0b1000, 0b01, 0b101, "pm2sub.w">;
def PM2SUBA_W : RVPTernary_rrr<0b1001, 0b01, 0b101, "pm2suba.w">;
def PM2SUB_WX : RVPBinary_rr<0b1010, 0b01, 0b101, "pm2sub.wx">;
def PM2SUBA_WX : RVPBinary_rr<0b1011, 0b01, 0b101, "pm2suba.wx">;
def PM2ADDSU_W : RVPBinary_rr<0b1100, 0b01, 0b101, "pm2addsu.w">;
def PM4ADDSU_H : RVPBinary_rr<0b1100, 0b11, 0b101, "pm4addsu.h">;
def PM2ADDASU_W : RVPTernary_rrr<0b1101, 0b01, 0b101, "pm2addasu.w">;
def PM4ADDASU_H : RVPTernary_rrr<0b1101, 0b11, 0b101, "pm4addasu.h">;
def PMQACC_W_H01 : RVPTernary_rrr<0b1111, 0b00, 0b101, "pmqacc.w.h01">;
def MQACC_W01 : RVPTernary_rrr<0b1111, 0b01, 0b101, "mqacc.w01">;
def PMQRACC_W_H01 : RVPTernary_rrr<0b1111, 0b10, 0b101, "pmqracc.w.h01">;
def MQRACC_W01 : RVPTernary_rrr<0b1111, 0b11, 0b101, "mqracc.w01">;
} // Predicates = [HasStdExtP, IsRV64]
let Predicates = [HasStdExtP] in {
def PAS_HX : RVPBinary_rr<0b0000, 0b00, 0b110, "pas.hx">;
def PSA_HX : RVPBinary_rr<0b0000, 0b10, 0b110, "psa.hx">;
def PSAS_HX : RVPBinary_rr<0b0010, 0b00, 0b110, "psas.hx">;
def PSSA_HX : RVPBinary_rr<0b0010, 0b10, 0b110, "pssa.hx">;
def PAAS_HX : RVPBinary_rr<0b0011, 0b00, 0b110, "paas.hx">;
def PASA_HX : RVPBinary_rr<0b0011, 0b10, 0b110, "pasa.hx">;
def PMSEQ_H : RVPBinary_rr<0b1000, 0b00, 0b110, "pmseq.h">;
def PMSEQ_B : RVPBinary_rr<0b1000, 0b10, 0b110, "pmseq.b">;
def PMSLT_H : RVPBinary_rr<0b1010, 0b00, 0b110, "pmslt.h">;
def PMSLT_B : RVPBinary_rr<0b1010, 0b10, 0b110, "pmslt.b">;
def PMSLTU_H : RVPBinary_rr<0b1011, 0b00, 0b110, "pmsltu.h">;
def PMSLTU_B : RVPBinary_rr<0b1011, 0b10, 0b110, "pmsltu.b">;
def PMIN_H : RVPBinary_rr<0b1100, 0b00, 0b110, "pmin.h">;
def PMIN_B : RVPBinary_rr<0b1100, 0b10, 0b110, "pmin.b">;
def PMINU_H : RVPBinary_rr<0b1101, 0b00, 0b110, "pminu.h">;
def PMINU_B : RVPBinary_rr<0b1101, 0b10, 0b110, "pminu.b">;
def PMAX_H : RVPBinary_rr<0b1110, 0b00, 0b110, "pmax.h">;
def PMAX_B : RVPBinary_rr<0b1110, 0b10, 0b110, "pmax.b">;
def PMAXU_H : RVPBinary_rr<0b1111, 0b00, 0b110, "pmaxu.h">;
def PMAXU_B : RVPBinary_rr<0b1111, 0b10, 0b110, "pmaxu.b">;
} // Predicates = [HasStdExtP]
let Predicates = [HasStdExtP, IsRV32], DecoderNamespace = "RV32Only" in {
def MSEQ : RVPBinary_rr<0b1000, 0b01, 0b110, "mseq">;
def MSLT : RVPBinary_rr<0b1010, 0b01, 0b110, "mslt">;
def MSLTU : RVPBinary_rr<0b1011, 0b01, 0b110, "msltu">;
} // Predicates = [HasStdExtP, IsRV32], DecoderNamespace = "RV32Only"
let Predicates = [HasStdExtP, IsRV64] in {
def PAS_WX : RVPBinary_rr<0b0000, 0b01, 0b110, "pas.wx">;
def PSA_WX : RVPBinary_rr<0b0000, 0b11, 0b110, "psa.wx">;
def PSAS_WX : RVPBinary_rr<0b0010, 0b01, 0b110, "psas.wx">;
def PSSA_WX : RVPBinary_rr<0b0010, 0b11, 0b110, "pssa.wx">;
def PAAS_WX : RVPBinary_rr<0b0011, 0b01, 0b110, "paas.wx">;
def PASA_WX : RVPBinary_rr<0b0011, 0b11, 0b110, "pasa.wx">;
def PMSEQ_W : RVPBinary_rr<0b1000, 0b01, 0b110, "pmseq.w">;
def PMSLT_W : RVPBinary_rr<0b1010, 0b01, 0b110, "pmslt.w">;
def PMSLTU_W : RVPBinary_rr<0b1011, 0b01, 0b110, "pmsltu.w">;
def PMIN_W : RVPBinary_rr<0b1100, 0b01, 0b110, "pmin.w">;
def PMINU_W : RVPBinary_rr<0b1101, 0b01, 0b110, "pminu.w">;
def PMAX_W : RVPBinary_rr<0b1110, 0b01, 0b110, "pmax.w">;
def PMAXU_W : RVPBinary_rr<0b1111, 0b01, 0b110, "pmaxu.w">;
} // Predicates = [HasStdExtP, IsRV64]
let Predicates = [HasStdExtP] in {
def PMULH_H : RVPBinary_rr<0b0000, 0b00, 0b111, "pmulh.h">;
def PMULHR_H : RVPBinary_rr<0b0000, 0b10, 0b111, "pmulhr.h">;
def PMHACC_H : RVPTernary_rrr<0b0001, 0b00, 0b111, "pmhacc.h">;
def PMHRACC_H : RVPTernary_rrr<0b0001, 0b10, 0b111, "pmhracc.h">;
def PMULHU_H : RVPBinary_rr<0b0010, 0b00, 0b111, "pmulhu.h">;
def PMULHRU_H : RVPBinary_rr<0b0010, 0b10, 0b111, "pmulhru.h">;
def PMHACCU_H : RVPTernary_rrr<0b0011, 0b00, 0b111, "pmhaccu.h">;
def PMHRACCU_H : RVPTernary_rrr<0b0011, 0b10, 0b111, "pmhraccu.h">;
def PMULH_H_B0 : RVPBinary_rr<0b0100, 0b00, 0b111, "pmulh.h.b0">;
def PMULHSU_H_B0 : RVPBinary_rr<0b0100, 0b10, 0b111, "pmulhsu.h.b0">;
def PMHACC_H_B0 : RVPTernary_rrr<0b0101, 0b00, 0b111, "pmhacc.h.b0">;
def PMHACCSU_H_B0 : RVPTernary_rrr<0b0101, 0b10, 0b111, "pmhaccsu.h.b0">;
def PMULH_H_B1 : RVPBinary_rr<0b0110, 0b00, 0b111, "pmulh.h.b1">;
def PMULHSU_H_B1 : RVPBinary_rr<0b0110, 0b10, 0b111, "pmulhsu.h.b1">;
def PMHACC_H_B1 : RVPTernary_rrr<0b0111, 0b00, 0b111, "pmhacc.h.b1">;
def PMHACCSU_H_B1 : RVPTernary_rrr<0b0111, 0b10, 0b111, "pmhaccsu.h.b1">;
def PMULHSU_H : RVPBinary_rr<0b1000, 0b00, 0b111, "pmulhsu.h">;
def PMULHRSU_H : RVPBinary_rr<0b1000, 0b10, 0b111, "pmulhrsu.h">;
def PMHACCSU_H : RVPBinary_rr<0b1001, 0b00, 0b111, "pmhaccsu.h">;
def PMHRACCSU_H : RVPBinary_rr<0b1001, 0b10, 0b111, "pmhraccsu.h">;
def PMULQ_H : RVPBinary_rr<0b1010, 0b00, 0b111, "pmulq.h">;
def PMULQR_H : RVPBinary_rr<0b1010, 0b10, 0b111, "pmulqr.h">;
} // Predicates = [HasStdExtP]
let Predicates = [HasStdExtP, IsRV32], DecoderNamespace = "RV32Only" in {
def MULHR : RVPBinary_rr<0b0000, 0b11, 0b111, "mulhr">;
def MHACC : RVPTernary_rrr<0b0001, 0b01, 0b111, "mhacc">;
def MHRACC : RVPTernary_rrr<0b0001, 0b11, 0b111, "mhracc">;
def MULHRU : RVPBinary_rr<0b0010, 0b11, 0b111, "mulhru">;
def MHACCU : RVPTernary_rrr<0b0011, 0b01, 0b111, "mhaccu">;
def MHRACCU : RVPTernary_rrr<0b0011, 0b11, 0b111, "mhraccu">;
def MULH_H0 : RVPBinary_rr<0b0100, 0b01, 0b111, "mulh.h0">;
def MULHSU_H0 : RVPBinary_rr<0b0100, 0b11, 0b111, "mulhsu.h0">;
def MHACC_H0 : RVPTernary_rrr<0b0101, 0b01, 0b111, "mhacc.h0">;
def MHACCSU_H0 : RVPTernary_rrr<0b0101, 0b11, 0b111, "mhaccsu.h0">;
def MULH_H1 : RVPBinary_rr<0b0110, 0b01, 0b111, "mulh.h1">;
def MULHSU_H1 : RVPBinary_rr<0b0110, 0b11, 0b111, "mulhsu.h1">;
def MHACC_H1 : RVPTernary_rrr<0b0111, 0b01, 0b111, "mhacc.h1">;
def MHACCSU_H1 : RVPTernary_rrr<0b0111, 0b11, 0b111, "mhaccsu.h1">;
def MULHRSU : RVPBinary_rr<0b1000, 0b11, 0b111, "mulhrsu">;
def MHACCSU : RVPTernary_rrr<0b1001, 0b01, 0b111, "mhaccsu">;
def MHRACCSU : RVPTernary_rrr<0b1001, 0b11, 0b111, "mhraccsu">;
def MULQ : RVPBinary_rr<0b1010, 0b01, 0b111, "mulq">;
def MULQR : RVPBinary_rr<0b1010, 0b11, 0b111, "mulqr">;
def MQACC_H00 : RVPTernary_rrr<0b1101, 0b00, 0b111, "mqacc.h00">;
def MQRACC_H00 : RVPTernary_rrr<0b1101, 0b10, 0b111, "mqracc.h00">;
def MQACC_H11 : RVPTernary_rrr<0b1111, 0b00, 0b111, "mqacc.h11">;
def MQRACC_H11 : RVPTernary_rrr<0b1111, 0b10, 0b111, "mqracc.h11">;
} // Predicates = [HasStdExtP, IsRV32], DecoderNamespace = "RV32Only" in
let Predicates = [HasStdExtP, IsRV64] in {
def PMULH_W : RVPBinary_rr<0b0000, 0b01, 0b111, "pmulh.w">;
def PMULHR_W : RVPBinary_rr<0b0000, 0b11, 0b111, "pmulhr.w">;
def PMHACC_W : RVPTernary_rrr<0b0001, 0b01, 0b111, "pmhacc.w">;
def PMHRACC_W : RVPTernary_rrr<0b0001, 0b11, 0b111, "pmhracc.w">;
def PMULHU_W : RVPBinary_rr<0b0010, 0b01, 0b111, "pmulhu.w">;
def PMULHRU_W : RVPBinary_rr<0b0010, 0b11, 0b111, "pmulhru.w">;
def PMHACCU_W : RVPTernary_rrr<0b0011, 0b01, 0b111, "pmhaccu.w">;
def PMHRACCU_W : RVPTernary_rrr<0b0011, 0b11, 0b111, "pmhraccu.w">;
def PMULH_W_H0 : RVPBinary_rr<0b0100, 0b01, 0b111, "pmulh.w.h0">;
def PMULHSU_W_H0 : RVPBinary_rr<0b0100, 0b11, 0b111, "pmulhsu.w.h0">;
def PMHACC_W_H0 : RVPBinary_rr<0b0101, 0b01, 0b111, "pmhacc.w.h0">;
def PMHACCSU_W_H0 : RVPBinary_rr<0b0101, 0b11, 0b111, "pmhaccsu.w.h0">;
def PMULH_W_H1 : RVPBinary_rr<0b0110, 0b01, 0b111, "pmulh.w.h1">;
def PMULHSU_W_H1 : RVPBinary_rr<0b0110, 0b11, 0b111, "pmulhsu.w.h1">;
def PMHACC_W_H1 : RVPTernary_rrr<0b0111, 0b01, 0b111, "pmhacc.w.h1">;
def PMHACCSU_W_H1 : RVPTernary_rrr<0b0111, 0b11, 0b111, "pmhaccsu.w.h1">;
def PMULHSU_W : RVPBinary_rr<0b1000, 0b01, 0b111, "pmulhsu.w">;
def PMULHRSU_W : RVPBinary_rr<0b1000, 0b11, 0b111, "pmulhrsu.w">;
def PMHACCSU_W : RVPTernary_rrr<0b1001, 0b01, 0b111, "pmhaccsu.w">;
def PMHRACCSU_W : RVPTernary_rrr<0b1001, 0b11, 0b111, "pmhraccsu.w">;
def PMULQ_W : RVPBinary_rr<0b1010, 0b01, 0b111, "pmulq.w">;
def PMULQR_W : RVPBinary_rr<0b1010, 0b11, 0b111, "pmulqr.w">;
def PMQACC_W_H00 : RVPTernary_rrr<0b1101, 0b00, 0b111, "pmqacc.w.h00">;
def MQACC_W00 : RVPTernary_rrr<0b1101, 0b01, 0b111, "mqacc.w00">;
def PMQRACC_W_H00 : RVPTernary_rrr<0b1101, 0b10, 0b111, "pmqracc.w.h00">;
def MQRACC_W00 : RVPTernary_rrr<0b1101, 0b11, 0b111, "mqracc.w00">;
def PMQACC_W_H11 : RVPTernary_rrr<0b1111, 0b00, 0b111, "pmqacc.w.h11">;
def MQACC_W11 : RVPTernary_rrr<0b1111, 0b01, 0b111, "mqacc.w11">;
def PMQRACC_W_H11 : RVPTernary_rrr<0b1111, 0b10, 0b111, "pmqracc.w.h11">;
def MQRACC_W11 : RVPTernary_rrr<0b1111, 0b11, 0b111, "mqracc.w11">;
} // Predicates = [HasStdExtP, IsRV64]
let Predicates = [HasStdExtP, IsRV32] in {
def PLI_DH : RVPPairLoadImm_i<0b0011000, (ins simm10:$imm10), "pli.dh",
"$rd, $imm10"> {

View File

@ -533,7 +533,7 @@
; RV32SUPM: .attribute 5, "rv32i2p1_supm1p0"
; RV32SMCTR: .attribute 5, "rv32i2p1_smctr1p0_sscsrind1p0"
; RV32SSCTR: .attribute 5, "rv32i2p1_sscsrind1p0_ssctr1p0"
; RV32P: .attribute 5, "rv32i2p1_p0p14"
; RV32P: .attribute 5, "rv32i2p1_p0p15"
; RV64M: .attribute 5, "rv64i2p1_m2p0_zmmul1p0"
; RV64ZMMUL: .attribute 5, "rv64i2p1_zmmul1p0"
@ -698,7 +698,7 @@
; RV64SDEXT: .attribute 5, "rv64i2p1_sdext1p0"
; RV64SDTRIG: .attribute 5, "rv64i2p1_sdtrig1p0"
; RV64XQCCMP: .attribute 5, "rv64i2p1_zca1p0_xqccmp0p3"
; RV64P: .attribute 5, "rv64i2p1_p0p14"
; RV64P: .attribute 5, "rv64i2p1_p0p15"
; RVI20U32: .attribute 5, "rv32i2p1"
; RVI20U64: .attribute 5, "rv64i2p1"

View File

@ -492,8 +492,8 @@
.attribute arch, "rv32i_sdtrig1p0"
# CHECK: attribute 5, "rv32i2p1_sdtrig1p0"
.attribute arch, "rv32i_p0p14"
# CHECK: attribute 5, "rv32i2p1_p0p14"
.attribute arch, "rv32i_p0p15"
# CHECK: attribute 5, "rv32i2p1_p0p15"
.attribute arch, "rv64i_p0p14"
# CHECK: attribute 5, "rv64i2p1_p0p14"
.attribute arch, "rv64i_p0p15"
# CHECK: attribute 5, "rv64i2p1_p0p15"

View File

@ -376,6 +376,287 @@ ppackt.h t3, s0, s0
# CHECK-ASM-AND-OBJ: packt a2, t3, t1
# CHECK-ASM: encoding: [0x3b,0x46,0x6e,0xb2]
packt a2, t3, t1
# CHECK-ASM: encoding: [0x3b,0x5e,0x83,0x80]
pm2add.h t3, t1, s0
# CHECK-ASM-AND-OBJ: pm4add.b t1, s2, t5
# CHECK-ASM: encoding: [0x3b,0x53,0xe9,0x85]
pm4add.b t1, s2, t5
# CHECK-ASM-AND-OBJ: pm2adda.h t1, s2, a4
# CHECK-ASM: encoding: [0x3b,0x53,0xe9,0x88]
pm2adda.h t1, s2, a4
# CHECK-ASM-AND-OBJ: pm4adda.b t3, a0, t5
# CHECK-ASM: encoding: [0x3b,0x5e,0xe5,0x8d]
pm4adda.b t3, a0, t5
# CHECK-ASM-AND-OBJ: pm2add.hx s0, t5, a4
# CHECK-ASM: encoding: [0x3b,0x54,0xef,0x90]
pm2add.hx s0, t5, a4
# CHECK-ASM-AND-OBJ: pm2adda.hx a0, a0, t1
# CHECK-ASM: encoding: [0x3b,0x55,0x65,0x98]
pm2adda.hx a0, a0, t1
# CHECK-ASM-AND-OBJ: pm2addu.h s2, t5, a2
# CHECK-ASM: encoding: [0x3b,0x59,0xcf,0xa0]
pm2addu.h s2, t5, a2
# CHECK-ASM-AND-OBJ: pm4addu.b t5, s0, t1
# CHECK-ASM: encoding: [0x3b,0x5f,0x64,0xa4]
pm4addu.b t5, s0, t1
# CHECK-ASM-AND-OBJ: pm2addau.h t3, t1, t5
# CHECK-ASM: encoding: [0x3b,0x5e,0xe3,0xa9]
pm2addau.h t3, t1, t5
# CHECK-ASM-AND-OBJ: pm4addau.b a4, t3, a0
# CHECK-ASM: encoding: [0x3b,0x57,0xae,0xac]
pm4addau.b a4, t3, a0
# CHECK-ASM-AND-OBJ: pmq2add.h t1, a2, t1
# CHECK-ASM: encoding: [0x3b,0x53,0x66,0xb0]
pmq2add.h t1, a2, t1
# CHECK-ASM-AND-OBJ: pmqr2add.h a2, a4, s2
# CHECK-ASM: encoding: [0x3b,0x56,0x27,0xb5]
pmqr2add.h a2, a4, s2
# CHECK-ASM-AND-OBJ: pmq2adda.h a2, s2, t1
# CHECK-ASM: encoding: [0x3b,0x56,0x69,0xb8]
pmq2adda.h a2, s2, t1
# CHECK-ASM-AND-OBJ: pmqr2adda.h t1, s0, a2
# CHECK-ASM: encoding: [0x3b,0x53,0xc4,0xbc]
pmqr2adda.h t1, s0, a2
# CHECK-ASM-AND-OBJ: pm2sub.h t1, a0, a4
# CHECK-ASM: encoding: [0x3b,0x53,0xe5,0xc0]
pm2sub.h t1, a0, a4
# CHECK-ASM-AND-OBJ: pm2sadd.h s2, s2, t3
# CHECK-ASM: encoding: [0x3b,0x59,0xc9,0xc5]
pm2sadd.h s2, s2, t3
# CHECK-ASM-AND-OBJ: pm2suba.h s0, s0, t3
# CHECK-ASM: encoding: [0x3b,0x54,0xc4,0xc9]
pm2suba.h s0, s0, t3
# CHECK-ASM-AND-OBJ: pm2sub.hx a2, a2, a0
# CHECK-ASM: encoding: [0x3b,0x56,0xa6,0xd0]
pm2sub.hx a2, a2, a0
# CHECK-ASM-AND-OBJ: pm2sadd.hx t5, s2, a0
# CHECK-ASM: encoding: [0x3b,0x5f,0xa9,0xd4]
pm2sadd.hx t5, s2, a0
# CHECK-ASM-AND-OBJ: pm2suba.hx a4, a2, t5
# CHECK-ASM: encoding: [0x3b,0x57,0xe6,0xd9]
pm2suba.hx a4, a2, t5
# CHECK-ASM-AND-OBJ: pm2addsu.h s0, s0, s2
# CHECK-ASM: encoding: [0x3b,0x54,0x24,0xe1]
pm2addsu.h s0, s0, s2
# CHECK-ASM-AND-OBJ: pm4addsu.b a0, s0, t3
# CHECK-ASM: encoding: [0x3b,0x55,0xc4,0xe5]
pm4addsu.b a0, s0, t3
# CHECK-ASM-AND-OBJ: pm2addasu.h a4, t1, a2
# CHECK-ASM: encoding: [0x3b,0x57,0xc3,0xe8]
pm2addasu.h a4, t1, a2
# CHECK-ASM-AND-OBJ: pm4addasu.b s2, s0, a2
# CHECK-ASM: encoding: [0x3b,0x59,0xc4,0xec]
pm4addasu.b s2, s0, a2
# CHECK-ASM-AND-OBJ: mqacc.h01 a4, t1, a0
# CHECK-ASM: encoding: [0x3b,0x57,0xa3,0xf8]
mqacc.h01 a4, t1, a0
# CHECK-ASM-AND-OBJ: mqracc.h01 s0, a0, t5
# CHECK-ASM: encoding: [0x3b,0x54,0xe5,0xfd]
mqracc.h01 s0, a0, t5
# CHECK-ASM-AND-OBJ: pas.hx t5, s2, t5
# CHECK-ASM: encoding: [0x3b,0x6f,0xe9,0x81]
pas.hx t5, s2, t5
# CHECK-ASM-AND-OBJ: psa.hx s0, t1, t3
# CHECK-ASM: encoding: [0x3b,0x64,0xc3,0x85]
psa.hx s0, t1, t3
# CHECK-ASM-AND-OBJ: psas.hx t5, s2, a2
# CHECK-ASM: encoding: [0x3b,0x6f,0xc9,0x90]
psas.hx t5, s2, a2
# CHECK-ASM-AND-OBJ: pssa.hx s2, t3, t5
# CHECK-ASM: encoding: [0x3b,0x69,0xee,0x95]
pssa.hx s2, t3, t5
# CHECK-ASM-AND-OBJ: paas.hx t1, a2, s0
# CHECK-ASM: encoding: [0x3b,0x63,0x86,0x98]
paas.hx t1, a2, s0
# CHECK-ASM-AND-OBJ: pasa.hx t1, s2, t3
# CHECK-ASM: encoding: [0x3b,0x63,0xc9,0x9d]
pasa.hx t1, s2, t3
# CHECK-ASM-AND-OBJ: pmseq.h a0, t1, s0
# CHECK-ASM: encoding: [0x3b,0x65,0x83,0xc0]
pmseq.h a0, t1, s0
# CHECK-ASM-AND-OBJ: pmseq.b s0, s2, s0
# CHECK-ASM: encoding: [0x3b,0x64,0x89,0xc4]
pmseq.b s0, s2, s0
# CHECK-ASM-AND-OBJ: pmslt.h t3, a2, a4
# CHECK-ASM: encoding: [0x3b,0x6e,0xe6,0xd0]
pmslt.h t3, a2, a4
# CHECK-ASM-AND-OBJ: pmslt.b t5, a4, t1
# CHECK-ASM: encoding: [0x3b,0x6f,0x67,0xd4]
pmslt.b t5, a4, t1
# CHECK-ASM-AND-OBJ: pmsltu.h s2, s0, s2
# CHECK-ASM: encoding: [0x3b,0x69,0x24,0xd9]
pmsltu.h s2, s0, s2
# CHECK-ASM-AND-OBJ: pmsltu.b s0, s2, t5
# CHECK-ASM: encoding: [0x3b,0x64,0xe9,0xdd]
pmsltu.b s0, s2, t5
# CHECK-ASM-AND-OBJ: pmin.h s2, t3, s2
# CHECK-ASM: encoding: [0x3b,0x69,0x2e,0xe1]
pmin.h s2, t3, s2
# CHECK-ASM-AND-OBJ: pmin.b a2, a2, t5
# CHECK-ASM: encoding: [0x3b,0x66,0xe6,0xe5]
pmin.b a2, a2, t5
# CHECK-ASM-AND-OBJ: pminu.h a0, a4, a2
# CHECK-ASM: encoding: [0x3b,0x65,0xc7,0xe8]
pminu.h a0, a4, a2
# CHECK-ASM-AND-OBJ: pminu.b a4, t3, s2
# CHECK-ASM: encoding: [0x3b,0x67,0x2e,0xed]
pminu.b a4, t3, s2
# CHECK-ASM-AND-OBJ: pmax.h a4, s2, a0
# CHECK-ASM: encoding: [0x3b,0x67,0xa9,0xf0]
pmax.h a4, s2, a0
# CHECK-ASM-AND-OBJ: pmax.b t1, s0, s0
# CHECK-ASM: encoding: [0x3b,0x63,0x84,0xf4]
pmax.b t1, s0, s0
# CHECK-ASM-AND-OBJ: pmaxu.h a0, s0, s0
# CHECK-ASM: encoding: [0x3b,0x65,0x84,0xf8]
pmaxu.h a0, s0, s0
# CHECK-ASM-AND-OBJ: pmaxu.b t3, a0, t1
# CHECK-ASM: encoding: [0x3b,0x6e,0x65,0xfc]
pmaxu.b t3, a0, t1
# CHECK-ASM-AND-OBJ: mseq a4, t1, s0
# CHECK-ASM: encoding: [0x3b,0x67,0x83,0xc2]
mseq a4, t1, s0
# CHECK-ASM-AND-OBJ: mslt t5, t5, t1
# CHECK-ASM: encoding: [0x3b,0x6f,0x6f,0xd2]
mslt t5, t5, t1
# CHECK-ASM-AND-OBJ: msltu s2, a0, t3
# CHECK-ASM: encoding: [0x3b,0x69,0xc5,0xdb]
msltu s2, a0, t3
# CHECK-ASM-AND-OBJ: pmulh.h s0, t3, t3
# CHECK-ASM: encoding: [0x3b,0x74,0xce,0x81]
pmulh.h s0, t3, t3
# CHECK-ASM-AND-OBJ: pmulhr.h t1, t5, s0
# CHECK-ASM: encoding: [0x3b,0x73,0x8f,0x84]
pmulhr.h t1, t5, s0
# CHECK-ASM-AND-OBJ: pmhacc.h s0, t5, s2
# CHECK-ASM: encoding: [0x3b,0x74,0x2f,0x89]
pmhacc.h s0, t5, s2
# CHECK-ASM-AND-OBJ: pmhracc.h a4, t3, a2
# CHECK-ASM: encoding: [0x3b,0x77,0xce,0x8c]
pmhracc.h a4, t3, a2
# CHECK-ASM-AND-OBJ: pmulhu.h a4, t5, a2
# CHECK-ASM: encoding: [0x3b,0x77,0xcf,0x90]
pmulhu.h a4, t5, a2
# CHECK-ASM-AND-OBJ: pmulhru.h a4, a2, a4
# CHECK-ASM: encoding: [0x3b,0x77,0xe6,0x94]
pmulhru.h a4, a2, a4
# CHECK-ASM-AND-OBJ: pmhaccu.h a4, t1, t3
# CHECK-ASM: encoding: [0x3b,0x77,0xc3,0x99]
pmhaccu.h a4, t1, t3
# CHECK-ASM-AND-OBJ: pmhraccu.h s2, s0, t1
# CHECK-ASM: encoding: [0x3b,0x79,0x64,0x9c]
pmhraccu.h s2, s0, t1
# CHECK-ASM-AND-OBJ: pmulh.h.b0 a0, t5, a4
# CHECK-ASM: encoding: [0x3b,0x75,0xef,0xa0]
pmulh.h.b0 a0, t5, a4
# CHECK-ASM-AND-OBJ: pmulhsu.h.b0 s0, a4, s2
# CHECK-ASM: encoding: [0x3b,0x74,0x27,0xa5]
pmulhsu.h.b0 s0, a4, s2
# CHECK-ASM-AND-OBJ: pmhacc.h.b0 s0, a0, t5
# CHECK-ASM: encoding: [0x3b,0x74,0xe5,0xa9]
pmhacc.h.b0 s0, a0, t5
# CHECK-ASM-AND-OBJ: pmhaccsu.h.b0 t3, s0, a4
# CHECK-ASM: encoding: [0x3b,0x7e,0xe4,0xac]
pmhaccsu.h.b0 t3, s0, a4
# CHECK-ASM-AND-OBJ: pmulh.h.b1 a0, a4, s2
# CHECK-ASM: encoding: [0x3b,0x75,0x27,0xb1]
pmulh.h.b1 a0, a4, s2
# CHECK-ASM-AND-OBJ: pmulhsu.h.b1 t5, t3, t1
# CHECK-ASM: encoding: [0x3b,0x7f,0x6e,0xb4]
pmulhsu.h.b1 t5, t3, t1
# CHECK-ASM-AND-OBJ: pmhacc.h.b1 t1, t5, a2
# CHECK-ASM: encoding: [0x3b,0x73,0xcf,0xb8]
pmhacc.h.b1 t1, t5, a2
# CHECK-ASM-AND-OBJ: pmhaccsu.h.b1 a2, a0, a4
# CHECK-ASM: encoding: [0x3b,0x76,0xe5,0xbc]
pmhaccsu.h.b1 a2, a0, a4
# CHECK-ASM-AND-OBJ: pmulhsu.h s0, a0, t1
# CHECK-ASM: encoding: [0x3b,0x74,0x65,0xc0]
pmulhsu.h s0, a0, t1
# CHECK-ASM-AND-OBJ: pmulhrsu.h t3, t5, a4
# CHECK-ASM: encoding: [0x3b,0x7e,0xef,0xc4]
pmulhrsu.h t3, t5, a4
# CHECK-ASM-AND-OBJ: pmhaccsu.h s0, s0, a4
# CHECK-ASM: encoding: [0x3b,0x74,0xe4,0xc8]
pmhaccsu.h s0, s0, a4
# CHECK-ASM-AND-OBJ: pmhraccsu.h a2, a2, a0
# CHECK-ASM: encoding: [0x3b,0x76,0xa6,0xcc]
pmhraccsu.h a2, a2, a0
# CHECK-ASM-AND-OBJ: pmulq.h a0, t1, t1
# CHECK-ASM: encoding: [0x3b,0x75,0x63,0xd0]
pmulq.h a0, t1, t1
# CHECK-ASM-AND-OBJ: pmulqr.h s2, s0, s2
# CHECK-ASM: encoding: [0x3b,0x79,0x24,0xd5]
pmulqr.h s2, s0, s2
# CHECK-ASM-AND-OBJ: mulhr a4, s2, t5
# CHECK-ASM: encoding: [0x3b,0x77,0xe9,0x87]
mulhr a4, s2, t5
# CHECK-ASM-AND-OBJ: mhacc t1, s0, a2
# CHECK-ASM: encoding: [0x3b,0x73,0xc4,0x8a]
mhacc t1, s0, a2
# CHECK-ASM-AND-OBJ: mhracc t1, t5, s0
# CHECK-ASM: encoding: [0x3b,0x73,0x8f,0x8e]
mhracc t1, t5, s0
# CHECK-ASM-AND-OBJ: mulhru t1, t5, s0
# CHECK-ASM: encoding: [0x3b,0x73,0x8f,0x96]
mulhru t1, t5, s0
# CHECK-ASM-AND-OBJ: mhaccu t3, a2, s2
# CHECK-ASM: encoding: [0x3b,0x7e,0x26,0x9b]
mhaccu t3, a2, s2
# CHECK-ASM-AND-OBJ: mhraccu a0, t1, a4
# CHECK-ASM: encoding: [0x3b,0x75,0xe3,0x9e]
mhraccu a0, t1, a4
# CHECK-ASM-AND-OBJ: mulh.h0 t3, a4, t1
# CHECK-ASM: encoding: [0x3b,0x7e,0x67,0xa2]
mulh.h0 t3, a4, t1
# CHECK-ASM-AND-OBJ: mulhsu.h0 t1, a2, a0
# CHECK-ASM: encoding: [0x3b,0x73,0xa6,0xa6]
mulhsu.h0 t1, a2, a0
# CHECK-ASM-AND-OBJ: mhacc.h0 s0, a2, t3
# CHECK-ASM: encoding: [0x3b,0x74,0xc6,0xab]
mhacc.h0 s0, a2, t3
# CHECK-ASM-AND-OBJ: mhaccsu.h0 a2, t1, s0
# CHECK-ASM: encoding: [0x3b,0x76,0x83,0xae]
mhaccsu.h0 a2, t1, s0
# CHECK-ASM-AND-OBJ: mulh.h1 t1, t1, t3
# CHECK-ASM: encoding: [0x3b,0x73,0xc3,0xb3]
mulh.h1 t1, t1, t3
# CHECK-ASM-AND-OBJ: mulhsu.h1 t3, a2, t1
# CHECK-ASM: encoding: [0x3b,0x7e,0x66,0xb6]
mulhsu.h1 t3, a2, t1
# CHECK-ASM-AND-OBJ: mhacc.h1 t3, a2, a0
# CHECK-ASM: encoding: [0x3b,0x7e,0xa6,0xba]
mhacc.h1 t3, a2, a0
# CHECK-ASM-AND-OBJ: mhaccsu.h1 s0, s2, s0
# CHECK-ASM: encoding: [0x3b,0x74,0x89,0xbe]
mhaccsu.h1 s0, s2, s0
# CHECK-ASM-AND-OBJ: mulhrsu t5, a4, t5
# CHECK-ASM: encoding: [0x3b,0x7f,0xe7,0xc7]
mulhrsu t5, a4, t5
# CHECK-ASM-AND-OBJ: mhaccsu a0, a2, s2
# CHECK-ASM: encoding: [0x3b,0x75,0x26,0xcb]
mhaccsu a0, a2, s2
# CHECK-ASM-AND-OBJ: mhraccsu a0, a0, t1
# CHECK-ASM: encoding: [0x3b,0x75,0x65,0xce]
mhraccsu a0, a0, t1
# CHECK-ASM-AND-OBJ: mulq t1, a2, a2
# CHECK-ASM: encoding: [0x3b,0x73,0xc6,0xd2]
mulq t1, a2, a2
# CHECK-ASM-AND-OBJ: mulqr a4, a4, t3
# CHECK-ASM: encoding: [0x3b,0x77,0xc7,0xd7]
mulqr a4, a4, t3
# CHECK-ASM-AND-OBJ: mqacc.h00 a2, t3, t3
# CHECK-ASM: encoding: [0x3b,0x76,0xce,0xe9]
mqacc.h00 a2, t3, t3
# CHECK-ASM-AND-OBJ: mqracc.h00 t5, a4, t3
# CHECK-ASM: encoding: [0x3b,0x7f,0xc7,0xed]
mqracc.h00 t5, a4, t3
# CHECK-ASM-AND-OBJ: mqacc.h11 t5, t5, s0
# CHECK-ASM: encoding: [0x3b,0x7f,0x8f,0xf8]
mqacc.h11 t5, t5, s0
# CHECK-ASM-AND-OBJ: mqracc.h11 s0, t5, s2
# CHECK-ASM: encoding: [0x3b,0x74,0x2f,0xfd]
mqracc.h11 s0, t5, s2
# CHECK-ASM-AND-OBJ: pli.dh a4, 16
# CHECK-ASM: encoding: [0x1b,0x27,0x10,0x30]

View File

@ -529,3 +529,408 @@ ppackt.w t3, a0, s2
# CHECK-ASM-AND-OBJ: packt a2, t3, t1
# CHECK-ASM: encoding: [0x3b,0x46,0x6e,0xb6]
packt a2, t3, t1
# CHECK-ASM-AND-OBJ: pm2add.h a4, t3, t5
# CHECK-ASM: encoding: [0x3b,0x57,0xee,0x81]
pm2add.h a4, t3, t5
# CHECK-ASM-AND-OBJ: pm4add.b t1, s2, s2
# CHECK-ASM: encoding: [0x3b,0x53,0x29,0x85]
pm4add.b t1, s2, s2
# CHECK-ASM-AND-OBJ: pm2adda.h a0, t5, s0
# CHECK-ASM: encoding: [0x3b,0x55,0x8f,0x88]
pm2adda.h a0, t5, s0
# CHECK-ASM-AND-OBJ: pm4adda.b a0, t5, a2
# CHECK-ASM: encoding: [0x3b,0x55,0xcf,0x8c]
pm4adda.b a0, t5, a2
# CHECK-ASM-AND-OBJ: pm2add.hx a0, s0, t3
# CHECK-ASM: encoding: [0x3b,0x55,0xc4,0x91]
pm2add.hx a0, s0, t3
# CHECK-ASM-AND-OBJ: pm2adda.hx s0, a0, s2
# CHECK-ASM: encoding: [0x3b,0x54,0x25,0x99]
pm2adda.hx s0, a0, s2
# CHECK-ASM-AND-OBJ: pm2addu.h t1, a4, a0
# CHECK-ASM: encoding: [0x3b,0x53,0xa7,0xa0]
pm2addu.h t1, a4, a0
# CHECK-ASM-AND-OBJ: pm4addu.b a0, t1, t3
# CHECK-ASM: encoding: [0x3b,0x55,0xc3,0xa5]
pm4addu.b a0, t1, t3
# CHECK-ASM-AND-OBJ: pm2addau.h s2, a2, a0
# CHECK-ASM: encoding: [0x3b,0x59,0xa6,0xa8]
pm2addau.h s2, a2, a0
# CHECK-ASM-AND-OBJ: pm4addau.b s2, s2, t5
# CHECK-ASM: encoding: [0x3b,0x59,0xe9,0xad]
pm4addau.b s2, s2, t5
# CHECK-ASM-AND-OBJ: pmq2add.h s2, s2, t3
# CHECK-ASM: encoding: [0x3b,0x59,0xc9,0xb1]
pmq2add.h s2, s2, t3
# CHECK-ASM-AND-OBJ: pmqr2add.h a4, a2, a0
# CHECK-ASM: encoding: [0x3b,0x57,0xa6,0xb4]
pmqr2add.h a4, a2, a0
# CHECK-ASM-AND-OBJ: pmq2adda.h a2, s2, t1
# CHECK-ASM: encoding: [0x3b,0x56,0x69,0xb8]
pmq2adda.h a2, s2, t1
# CHECK-ASM-AND-OBJ: pmqr2adda.h a2, a0, a0
# CHECK-ASM: encoding: [0x3b,0x56,0xa5,0xbc]
pmqr2adda.h a2, a0, a0
# CHECK-ASM-AND-OBJ: pm2sub.h t5, s0, s0
# CHECK-ASM: encoding: [0x3b,0x5f,0x84,0xc0]
pm2sub.h t5, s0, s0
# CHECK-ASM-AND-OBJ: pm2sadd.h a0, t5, a0
# CHECK-ASM: encoding: [0x3b,0x55,0xaf,0xc4]
pm2sadd.h a0, t5, a0
# CHECK-ASM-AND-OBJ: pm2suba.h s0, a4, t5
# CHECK-ASM: encoding: [0x3b,0x54,0xe7,0xc9]
pm2suba.h s0, a4, t5
# CHECK-ASM-AND-OBJ: pm2sub.hx t3, t5, a0
# CHECK-ASM: encoding: [0x3b,0x5e,0xaf,0xd0]
pm2sub.hx t3, t5, a0
# CHECK-ASM-AND-OBJ: pm2sadd.hx t1, a0, t3
# CHECK-ASM: encoding: [0x3b,0x53,0xc5,0xd5]
pm2sadd.hx t1, a0, t3
# CHECK-ASM-AND-OBJ: pm2suba.hx t3, a0, a4
# CHECK-ASM: encoding: [0x3b,0x5e,0xe5,0xd8]
pm2suba.hx t3, a0, a4
# CHECK-ASM-AND-OBJ: pm2addsu.h t3, a0, t3
# CHECK-ASM: encoding: [0x3b,0x5e,0xc5,0xe1]
pm2addsu.h t3, a0, t3
# CHECK-ASM-AND-OBJ: pm4addsu.b t1, t5, s0
# CHECK-ASM: encoding: [0x3b,0x53,0x8f,0xe4]
pm4addsu.b t1, t5, s0
# CHECK-ASM-AND-OBJ: pm2addasu.h t1, t3, t3
# CHECK-ASM: encoding: [0x3b,0x53,0xce,0xe9]
pm2addasu.h t1, t3, t3
# CHECK-ASM-AND-OBJ: pm4addasu.b t3, a0, a0
# CHECK-ASM: encoding: [0x3b,0x5e,0xa5,0xec]
pm4addasu.b t3, a0, a0
# CHECK-ASM-AND-OBJ: pm2add.w t3, s0, t5
# CHECK-ASM: encoding: [0x3b,0x5e,0xe4,0x83]
pm2add.w t3, s0, t5
# CHECK-ASM-AND-OBJ: pm4add.h s2, s2, t3
# CHECK-ASM: encoding: [0x3b,0x59,0xc9,0x87]
pm4add.h s2, s2, t3
# CHECK-ASM-AND-OBJ: pm2adda.w a2, a0, s0
# CHECK-ASM: encoding: [0x3b,0x56,0x85,0x8a]
pm2adda.w a2, a0, s0
# CHECK-ASM-AND-OBJ: pm4adda.h s2, s0, t1
# CHECK-ASM: encoding: [0x3b,0x59,0x64,0x8e]
pm4adda.h s2, s0, t1
# CHECK-ASM-AND-OBJ: pm2add.wx t1, s0, a4
# CHECK-ASM: encoding: [0x3b,0x53,0xe4,0x92]
pm2add.wx t1, s0, a4
# CHECK-ASM-AND-OBJ: pm2adda.wx t5, t3, s0
# CHECK-ASM: encoding: [0x3b,0x5f,0x8e,0x9a]
pm2adda.wx t5, t3, s0
# CHECK-ASM-AND-OBJ: pm2addu.w s2, a0, s2
# CHECK-ASM: encoding: [0x3b,0x59,0x25,0xa3]
pm2addu.w s2, a0, s2
# CHECK-ASM-AND-OBJ: pm4addu.h a4, a2, a2
# CHECK-ASM: encoding: [0x3b,0x57,0xc6,0xa6]
pm4addu.h a4, a2, a2
# CHECK-ASM-AND-OBJ: pm2addau.w s0, s0, a4
# CHECK-ASM: encoding: [0x3b,0x54,0xe4,0xaa]
pm2addau.w s0, s0, a4
# CHECK-ASM-AND-OBJ: pm4addau.h a2, a4, t5
# CHECK-ASM: encoding: [0x3b,0x56,0xe7,0xaf]
pm4addau.h a2, a4, t5
# CHECK-ASM-AND-OBJ: pmq2add.w t5, t1, t1
# CHECK-ASM: encoding: [0x3b,0x5f,0x63,0xb2]
pmq2add.w t5, t1, t1
# CHECK-ASM-AND-OBJ: pmqr2add.w s0, t1, a4
# CHECK-ASM: encoding: [0x3b,0x54,0xe3,0xb6]
pmqr2add.w s0, t1, a4
# CHECK-ASM-AND-OBJ: pmq2adda.w a4, s0, t1
# CHECK-ASM: encoding: [0x3b,0x57,0x64,0xba]
pmq2adda.w a4, s0, t1
# CHECK-ASM-AND-OBJ: pmqr2adda.w a4, t5, s0
# CHECK-ASM: encoding: [0x3b,0x57,0x8f,0xbe]
pmqr2adda.w a4, t5, s0
# CHECK-ASM-AND-OBJ: pm2sub.w t3, a2, t1
# CHECK-ASM: encoding: [0x3b,0x5e,0x66,0xc2]
pm2sub.w t3, a2, t1
# CHECK-ASM-AND-OBJ: pm2suba.w t5, t5, t3
# CHECK-ASM: encoding: [0x3b,0x5f,0xcf,0xcb]
pm2suba.w t5, t5, t3
# CHECK-ASM-AND-OBJ: pm2sub.wx t5, s2, s0
# CHECK-ASM: encoding: [0x3b,0x5f,0x89,0xd2]
pm2sub.wx t5, s2, s0
# CHECK-ASM-AND-OBJ: pm2suba.wx a2, a0, a4
# CHECK-ASM: encoding: [0x3b,0x56,0xe5,0xda]
pm2suba.wx a2, a0, a4
# CHECK-ASM-AND-OBJ: pm2addsu.w s0, s0, s2
# CHECK-ASM: encoding: [0x3b,0x54,0x24,0xe3]
pm2addsu.w s0, s0, s2
# CHECK-ASM-AND-OBJ: pm4addsu.h a2, s2, s0
# CHECK-ASM: encoding: [0x3b,0x56,0x89,0xe6]
pm4addsu.h a2, s2, s0
# CHECK-ASM-AND-OBJ: pm2addasu.w a0, a2, a0
# CHECK-ASM: encoding: [0x3b,0x55,0xa6,0xea]
pm2addasu.w a0, a2, a0
# CHECK-ASM-AND-OBJ: pm4addasu.h a0, s0, t5
# CHECK-ASM: encoding: [0x3b,0x55,0xe4,0xef]
pm4addasu.h a0, s0, t5
# CHECK-ASM-AND-OBJ: pmqacc.w.h01 t5, t1, a4
# CHECK-ASM: encoding: [0x3b,0x5f,0xe3,0xf8]
pmqacc.w.h01 t5, t1, a4
# CHECK-ASM-AND-OBJ: mqacc.w01 a0, a2, t3
# CHECK-ASM: encoding: [0x3b,0x55,0xc6,0xfb]
mqacc.w01 a0, a2, t3
# CHECK-ASM-AND-OBJ: pmqracc.w.h01 a4, t1, s2
# CHECK-ASM: encoding: [0x3b,0x57,0x23,0xfd]
pmqracc.w.h01 a4, t1, s2
# CHECK-ASM-AND-OBJ: mqracc.w01 s0, t5, a4
# CHECK-ASM: encoding: [0x3b,0x54,0xef,0xfe]
mqracc.w01 s0, t5, a4
# CHECK-ASM-AND-OBJ: pas.hx a0, t5, t1
# CHECK-ASM: encoding: [0x3b,0x65,0x6f,0x80]
pas.hx a0, t5, t1
# CHECK-ASM-AND-OBJ: psa.hx a2, t3, a0
# CHECK-ASM: encoding: [0x3b,0x66,0xae,0x84]
psa.hx a2, t3, a0
# CHECK-ASM-AND-OBJ: psas.hx s0, a0, a2
# CHECK-ASM: encoding: [0x3b,0x64,0xc5,0x90]
psas.hx s0, a0, a2
# CHECK-ASM-AND-OBJ: pssa.hx a0, t1, t5
# CHECK-ASM: encoding: [0x3b,0x65,0xe3,0x95]
pssa.hx a0, t1, t5
# CHECK-ASM-AND-OBJ: paas.hx t1, a2, s0
# CHECK-ASM: encoding: [0x3b,0x63,0x86,0x98]
paas.hx t1, a2, s0
# CHECK-ASM-AND-OBJ: pasa.hx t1, s2, t3
# CHECK-ASM: encoding: [0x3b,0x63,0xc9,0x9d]
pasa.hx t1, s2, t3
# CHECK-ASM-AND-OBJ: pmseq.h t3, s0, t1
# CHECK-ASM: encoding: [0x3b,0x6e,0x64,0xc0]
pmseq.h t3, s0, t1
# CHECK-ASM-AND-OBJ: pmseq.b t5, s2, a2
# CHECK-ASM: encoding: [0x3b,0x6f,0xc9,0xc4]
pmseq.b t5, s2, a2
# CHECK-ASM-AND-OBJ: pmslt.h t1, a0, a4
# CHECK-ASM: encoding: [0x3b,0x63,0xe5,0xd0]
pmslt.h t1, a0, a4
# CHECK-ASM-AND-OBJ: pmslt.b s2, t3, t1
# CHECK-ASM: encoding: [0x3b,0x69,0x6e,0xd4]
pmslt.b s2, t3, t1
# CHECK-ASM-AND-OBJ: pmsltu.h t1, a0, t5
# CHECK-ASM: encoding: [0x3b,0x63,0xe5,0xd9]
pmsltu.h t1, a0, t5
# CHECK-ASM-AND-OBJ: pmsltu.b t3, a4, s2
# CHECK-ASM: encoding: [0x3b,0x6e,0x27,0xdd]
pmsltu.b t3, a4, s2
# CHECK-ASM-AND-OBJ: pmin.h a2, a2, s2
# CHECK-ASM: encoding: [0x3b,0x66,0x26,0xe1]
pmin.h a2, a2, s2
# CHECK-ASM-AND-OBJ: pmin.b t3, a2, a0
# CHECK-ASM: encoding: [0x3b,0x6e,0xa6,0xe4]
pmin.b t3, a2, a0
# CHECK-ASM-AND-OBJ: pminu.h a2, s2, t1
# CHECK-ASM: encoding: [0x3b,0x66,0x69,0xe8]
pminu.h a2, s2, t1
# CHECK-ASM-AND-OBJ: pminu.b a0, t1, a0
# CHECK-ASM: encoding: [0x3b,0x65,0xa3,0xec]
pminu.b a0, t1, a0
# CHECK-ASM-AND-OBJ: pmax.h a0, s0, a4
# CHECK-ASM: encoding: [0x3b,0x65,0xe4,0xf0]
pmax.h a0, s0, a4
# CHECK-ASM-AND-OBJ: pmax.b t1, t3, a2
# CHECK-ASM: encoding: [0x3b,0x63,0xce,0xf4]
pmax.b t1, t3, a2
# CHECK-ASM-AND-OBJ: pmaxu.h t1, a0, s2
# CHECK-ASM: encoding: [0x3b,0x63,0x25,0xf9]
pmaxu.h t1, a0, s2
# CHECK-ASM-AND-OBJ: pmaxu.b t1, t3, s2
# CHECK-ASM: encoding: [0x3b,0x63,0x2e,0xfd]
pmaxu.b t1, t3, s2
# CHECK-ASM-AND-OBJ: pas.wx t1, a2, s0
# CHECK-ASM: encoding: [0x3b,0x63,0x86,0x82]
pas.wx t1, a2, s0
# CHECK-ASM-AND-OBJ: psa.wx t3, t3, a2
# CHECK-ASM: encoding: [0x3b,0x6e,0xce,0x86]
psa.wx t3, t3, a2
# CHECK-ASM-AND-OBJ: psas.wx a4, a4, s2
# CHECK-ASM: encoding: [0x3b,0x67,0x27,0x93]
psas.wx a4, a4, s2
# CHECK-ASM-AND-OBJ: pssa.wx a0, a2, a0
# CHECK-ASM: encoding: [0x3b,0x65,0xa6,0x96]
pssa.wx a0, a2, a0
# CHECK-ASM-AND-OBJ: paas.wx s0, a4, t1
# CHECK-ASM: encoding: [0x3b,0x64,0x67,0x9a]
paas.wx s0, a4, t1
# CHECK-ASM-AND-OBJ: pasa.wx t1, s2, s2
# CHECK-ASM: encoding: [0x3b,0x63,0x29,0x9f]
pasa.wx t1, s2, s2
# CHECK-ASM-AND-OBJ: pmseq.w t1, a4, s2
# CHECK-ASM: encoding: [0x3b,0x63,0x27,0xc3]
pmseq.w t1, a4, s2
# CHECK-ASM-AND-OBJ: pmslt.w t5, t5, t3
# CHECK-ASM: encoding: [0x3b,0x6f,0xcf,0xd3]
pmslt.w t5, t5, t3
# CHECK-ASM-AND-OBJ: pmsltu.w s2, a4, t1
# CHECK-ASM: encoding: [0x3b,0x69,0x67,0xda]
pmsltu.w s2, a4, t1
# CHECK-ASM-AND-OBJ: pmin.w t5, a4, t5
# CHECK-ASM: encoding: [0x3b,0x6f,0xe7,0xe3]
pmin.w t5, a4, t5
# CHECK-ASM-AND-OBJ: pminu.w a0, a2, a0
# CHECK-ASM: encoding: [0x3b,0x65,0xa6,0xea]
pminu.w a0, a2, a0
# CHECK-ASM-AND-OBJ: pmax.w a0, s2, t1
# CHECK-ASM: encoding: [0x3b,0x65,0x69,0xf2]
pmax.w a0, s2, t1
# CHECK-ASM-AND-OBJ: pmaxu.w a0, a4, a4
# CHECK-ASM: encoding: [0x3b,0x65,0xe7,0xfa]
pmaxu.w a0, a4, a4
# CHECK-ASM-AND-OBJ: pmulh.h a0, t5, t1
# CHECK-ASM: encoding: [0x3b,0x75,0x6f,0x80]
pmulh.h a0, t5, t1
# CHECK-ASM-AND-OBJ: pmulhr.h s2, t5, t3
# CHECK-ASM: encoding: [0x3b,0x79,0xcf,0x85]
pmulhr.h s2, t5, t3
# CHECK-ASM-AND-OBJ: pmhacc.h t5, t3, a4
# CHECK-ASM: encoding: [0x3b,0x7f,0xee,0x88]
pmhacc.h t5, t3, a4
# CHECK-ASM-AND-OBJ: pmhracc.h s2, t5, s2
# CHECK-ASM: encoding: [0x3b,0x79,0x2f,0x8d]
pmhracc.h s2, t5, s2
# CHECK-ASM-AND-OBJ: pmulhu.h t3, t1, t1
# CHECK-ASM: encoding: [0x3b,0x7e,0x63,0x90]
pmulhu.h t3, t1, t1
# CHECK-ASM-AND-OBJ: pmulhru.h s0, t5, t1
# CHECK-ASM: encoding: [0x3b,0x74,0x6f,0x94]
pmulhru.h s0, t5, t1
# CHECK-ASM-AND-OBJ: pmhaccu.h t3, a0, t3
# CHECK-ASM: encoding: [0x3b,0x7e,0xc5,0x99]
pmhaccu.h t3, a0, t3
# CHECK-ASM-AND-OBJ: pmhraccu.h t5, t3, a2
# CHECK-ASM: encoding: [0x3b,0x7f,0xce,0x9c]
pmhraccu.h t5, t3, a2
# CHECK-ASM-AND-OBJ: pmulh.h.b0 t1, a0, a0
# CHECK-ASM: encoding: [0x3b,0x73,0xa5,0xa0]
pmulh.h.b0 t1, a0, a0
# CHECK-ASM-AND-OBJ: pmulhsu.h.b0 t3, s0, a4
# CHECK-ASM: encoding: [0x3b,0x7e,0xe4,0xa4]
pmulhsu.h.b0 t3, s0, a4
# CHECK-ASM-AND-OBJ: pmhacc.h.b0 t1, a0, a4
# CHECK-ASM: encoding: [0x3b,0x73,0xe5,0xa8]
pmhacc.h.b0 t1, a0, a4
# CHECK-ASM-AND-OBJ: pmhaccsu.h.b0 s2, t5, t3
# CHECK-ASM: encoding: [0x3b,0x79,0xcf,0xad]
pmhaccsu.h.b0 s2, t5, t3
# CHECK-ASM-AND-OBJ: pmulh.h.b1 a0, s0, a2
# CHECK-ASM: encoding: [0x3b,0x75,0xc4,0xb0]
pmulh.h.b1 a0, s0, a2
# CHECK-ASM-AND-OBJ: pmulhsu.h.b1 t1, t3, t3
# CHECK-ASM: encoding: [0x3b,0x73,0xce,0xb5]
pmulhsu.h.b1 t1, t3, t3
# CHECK-ASM-AND-OBJ: pmhacc.h.b1 t3, t5, s2
# CHECK-ASM: encoding: [0x3b,0x7e,0x2f,0xb9]
pmhacc.h.b1 t3, t5, s2
# CHECK-ASM-AND-OBJ: pmhaccsu.h.b1 t5, t5, t1
# CHECK-ASM: encoding: [0x3b,0x7f,0x6f,0xbc]
pmhaccsu.h.b1 t5, t5, t1
# CHECK-ASM-AND-OBJ: pmulhsu.h s2, t3, a4
# CHECK-ASM: encoding: [0x3b,0x79,0xee,0xc0]
pmulhsu.h s2, t3, a4
# CHECK-ASM-AND-OBJ: pmulhrsu.h a0, a0, t5
# CHECK-ASM: encoding: [0x3b,0x75,0xe5,0xc5]
pmulhrsu.h a0, a0, t5
# CHECK-ASM-AND-OBJ: pmhaccsu.h s0, t3, t1
# CHECK-ASM: encoding: [0x3b,0x74,0x6e,0xc8]
pmhaccsu.h s0, t3, t1
# CHECK-ASM-AND-OBJ: pmhraccsu.h s0, t5, a4
# CHECK-ASM: encoding: [0x3b,0x74,0xef,0xcc]
pmhraccsu.h s0, t5, a4
# CHECK-ASM-AND-OBJ: pmulq.h t3, t1, s0
# CHECK-ASM: encoding: [0x3b,0x7e,0x83,0xd0]
pmulq.h t3, t1, s0
# CHECK-ASM-AND-OBJ: pmulqr.h t1, s2, s0
# CHECK-ASM: encoding: [0x3b,0x73,0x89,0xd4]
pmulqr.h t1, s2, s0
# CHECK-ASM-AND-OBJ: pmulh.w t5, a4, a4
# CHECK-ASM: encoding: [0x3b,0x7f,0xe7,0x82]
pmulh.w t5, a4, a4
# CHECK-ASM-AND-OBJ: pmulhr.w t1, t5, t1
# CHECK-ASM: encoding: [0x3b,0x73,0x6f,0x86]
pmulhr.w t1, t5, t1
# CHECK-ASM-AND-OBJ: pmhacc.w t5, s0, t5
# CHECK-ASM: encoding: [0x3b,0x7f,0xe4,0x8b]
pmhacc.w t5, s0, t5
# CHECK-ASM-AND-OBJ: pmhracc.w s0, s2, t5
# CHECK-ASM: encoding: [0x3b,0x74,0xe9,0x8f]
pmhracc.w s0, s2, t5
# CHECK-ASM-AND-OBJ: pmulhu.w a2, a0, a4
# CHECK-ASM: encoding: [0x3b,0x76,0xe5,0x92]
pmulhu.w a2, a0, a4
# CHECK-ASM-AND-OBJ: pmulhru.w t1, t1, a4
# CHECK-ASM: encoding: [0x3b,0x73,0xe3,0x96]
pmulhru.w t1, t1, a4
# CHECK-ASM-AND-OBJ: pmhaccu.w a0, s0, a0
# CHECK-ASM: encoding: [0x3b,0x75,0xa4,0x9a]
pmhaccu.w a0, s0, a0
# CHECK-ASM-AND-OBJ: pmhraccu.w s2, s0, t3
# CHECK-ASM: encoding: [0x3b,0x79,0xc4,0x9f]
pmhraccu.w s2, s0, t3
# CHECK-ASM-AND-OBJ: pmulh.w.h0 t5, s0, t5
# CHECK-ASM: encoding: [0x3b,0x7f,0xe4,0xa3]
pmulh.w.h0 t5, s0, t5
# CHECK-ASM-AND-OBJ: pmulhsu.w.h0 a2, t3, a2
# CHECK-ASM: encoding: [0x3b,0x76,0xce,0xa6]
pmulhsu.w.h0 a2, t3, a2
# CHECK-ASM-AND-OBJ: pmhacc.w.h0 a2, a0, t1
# CHECK-ASM: encoding: [0x3b,0x76,0x65,0xaa]
pmhacc.w.h0 a2, a0, t1
# CHECK-ASM-AND-OBJ: pmhaccsu.w.h0 t1, a4, t1
# CHECK-ASM: encoding: [0x3b,0x73,0x67,0xae]
pmhaccsu.w.h0 t1, a4, t1
# CHECK-ASM-AND-OBJ: pmulh.w.h1 t1, a0, t3
# CHECK-ASM: encoding: [0x3b,0x73,0xc5,0xb3]
pmulh.w.h1 t1, a0, t3
# CHECK-ASM-AND-OBJ: pmulhsu.w.h1 s2, t3, a4
# CHECK-ASM: encoding: [0x3b,0x79,0xee,0xb6]
pmulhsu.w.h1 s2, t3, a4
# CHECK-ASM-AND-OBJ: pmhacc.w.h1 s0, t5, a2
# CHECK-ASM: encoding: [0x3b,0x74,0xcf,0xba]
pmhacc.w.h1 s0, t5, a2
# CHECK-ASM-AND-OBJ: pmhaccsu.w.h1 a0, a0, a0
# CHECK-ASM: encoding: [0x3b,0x75,0xa5,0xbe]
pmhaccsu.w.h1 a0, a0, a0
# CHECK-ASM-AND-OBJ: pmulhsu.w t3, a2, a4
# CHECK-ASM: encoding: [0x3b,0x7e,0xe6,0xc2]
pmulhsu.w t3, a2, a4
# CHECK-ASM-AND-OBJ: pmulhrsu.w t5, a0, a0
# CHECK-ASM: encoding: [0x3b,0x7f,0xa5,0xc6]
pmulhrsu.w t5, a0, a0
# CHECK-ASM-AND-OBJ: pmhaccsu.w a4, a0, a0
# CHECK-ASM: encoding: [0x3b,0x77,0xa5,0xca]
pmhaccsu.w a4, a0, a0
# CHECK-ASM-AND-OBJ: pmhraccsu.w t5, t1, t3
# CHECK-ASM: encoding: [0x3b,0x7f,0xc3,0xcf]
pmhraccsu.w t5, t1, t3
# CHECK-ASM-AND-OBJ: pmulq.w a2, a2, t5
# CHECK-ASM: encoding: [0x3b,0x76,0xe6,0xd3]
pmulq.w a2, a2, t5
# CHECK-ASM-AND-OBJ: pmulqr.w a0, t3, t5
# CHECK-ASM: encoding: [0x3b,0x75,0xee,0xd7]
pmulqr.w a0, t3, t5
# CHECK-ASM-AND-OBJ: pmqacc.w.h00 t5, a4, t1
# CHECK-ASM: encoding: [0x3b,0x7f,0x67,0xe8]
pmqacc.w.h00 t5, a4, t1
# CHECK-ASM-AND-OBJ: mqacc.w00 t1, t1, a0
# CHECK-ASM: encoding: [0x3b,0x73,0xa3,0xea]
mqacc.w00 t1, t1, a0
# CHECK-ASM-AND-OBJ: pmqracc.w.h00 t1, a2, t5
# CHECK-ASM: encoding: [0x3b,0x73,0xe6,0xed]
pmqracc.w.h00 t1, a2, t5
# CHECK-ASM-AND-OBJ: mqracc.w00 s2, s2, a2
# CHECK-ASM: encoding: [0x3b,0x79,0xc9,0xee]
mqracc.w00 s2, s2, a2
# CHECK-ASM-AND-OBJ: pmqacc.w.h11 a2, a0, a0
# CHECK-ASM: encoding: [0x3b,0x76,0xa5,0xf8]
pmqacc.w.h11 a2, a0, a0
# CHECK-ASM-AND-OBJ: mqacc.w11 a4, a2, a2
# CHECK-ASM: encoding: [0x3b,0x77,0xc6,0xfa]
mqacc.w11 a4, a2, a2
# CHECK-ASM-AND-OBJ: pmqracc.w.h11 s0, t1, t3
# CHECK-ASM: encoding: [0x3b,0x74,0xc3,0xfd]
pmqracc.w.h11 s0, t1, t3
# CHECK-ASM-AND-OBJ: mqracc.w11 s2, t1, a4
# CHECK-ASM: encoding: [0x3b,0x79,0xe3,0xfe]
mqracc.w11 s2, t1, a4

View File

@ -1181,7 +1181,7 @@ R"(All available -march extensions for RISC-V
xwchc 2.2
Experimental extensions
p 0.14
p 0.15
zicfilp 1.0 This is a long dummy description
zicfiss 1.0
zalasr 0.1