[llvm] [RISCV][P-ext] Remove VXSAT from SHL/SHLR/SHA/SHAR. Add to PSAS and PSSA. (PR #195488)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Sat May 2 15:29:55 PDT 2026
https://github.com/topperc created https://github.com/llvm/llvm-project/pull/195488
None
>From 572c091c6a462d34e610a0541c99da0d0a6871e5 Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Fri, 1 May 2026 15:03:43 -0700
Subject: [PATCH] [RISCV][P-ext] Remove VXSAT from SHL/SHLR/SHA/SHAR. Add to
PSAS and PSSA.
---
llvm/lib/Target/RISCV/RISCVInstrInfoP.td | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoP.td b/llvm/lib/Target/RISCV/RISCVInstrInfoP.td
index e696f1b10c112..efb383cbac2a1 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoP.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoP.td
@@ -645,25 +645,21 @@ let Predicates = [HasStdExtP, IsRV64] in {
def PADD_WS : RVPBinaryScalar_rr<0b001, 0b01, 0b010, "padd.ws">;
- let Defs = [VXSAT] in {
+ let Defs = [VXSAT] in
def PSSHL_WS : RVPBinaryScalar_rr<0b010, 0b01, 0b010, "psshl.ws">;
def SHL : RVPBinaryScalar_rr<0b010, 0b11, 0b010, "shl">;
- } // Defs = [VXSAT]
- let Defs = [VXSAT] in {
+ let Defs = [VXSAT] in
def PSSHLR_WS : RVPBinaryScalar_rr<0b011, 0b01, 0b010, "psshlr.ws">;
def SHLR : RVPBinaryScalar_rr<0b011, 0b11, 0b010, "shlr">;
- } // Defs = [VXSAT]
- let Defs = [VXSAT] in {
+ let Defs = [VXSAT] in
def PSSHA_WS : RVPBinaryScalar_rr<0b110, 0b01, 0b010, "pssha.ws">;
def SHA : RVPBinaryScalar_rr<0b110, 0b11, 0b010, "sha">;
- } // Defs = [VXSAT]
- let Defs = [VXSAT] in {
+ let Defs = [VXSAT] in
def PSSHAR_WS : RVPBinaryScalar_rr<0b111, 0b01, 0b010, "psshar.ws">;
def SHAR : RVPBinaryScalar_rr<0b111, 0b11, 0b010, "shar">;
- } // Defs = [VXSAT]
} // Predicates = [HasStdExtP, IsRV64]
let Predicates = [HasStdExtP] in {
@@ -1101,8 +1097,10 @@ let Predicates = [HasStdExtP] in {
def PAS_HX : RVPBinary_rr<0b0000, 0b00, 0b110, "pas.hx">;
def PSA_HX : RVPBinary_rr<0b0000, 0b10, 0b110, "psa.hx">;
+ let Defs = [VXSAT] in {
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">;
@@ -1139,8 +1137,10 @@ 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">;
+ let Defs = [VXSAT] in {
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">;
@@ -1632,8 +1632,10 @@ let Predicates = [HasStdExtP, IsRV32] in {
def PAS_DHX : RVPPairBinaryExchanged_rr<0b0000, 0b00, "pas.dhx">;
def PSA_DHX : RVPPairBinaryExchanged_rr<0b0000, 0b10, "psa.dhx">;
+ let Defs = [VXSAT] in {
def PSAS_DHX : RVPPairBinaryExchanged_rr<0b0010, 0b00, "psas.dhx">;
def PSSA_DHX : RVPPairBinaryExchanged_rr<0b0010, 0b10, "pssa.dhx">;
+ }
def PAAS_DHX : RVPPairBinaryExchanged_rr<0b0011, 0b00, "paas.dhx">;
def PASA_DHX : RVPPairBinaryExchanged_rr<0b0011, 0b10, "pasa.dhx">;
More information about the llvm-commits
mailing list