[llvm] 8bfe491 - [RISCV] Split BEXT and BEXTI Write classes. NFC.
Michael Maitland via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 17 15:52:50 PDT 2023
Author: Michael Maitland
Date: 2023-07-17T15:52:40-07:00
New Revision: 8bfe491763d9cc18f68d4caecbea9311c2b82bb7
URL: https://github.com/llvm/llvm-project/commit/8bfe491763d9cc18f68d4caecbea9311c2b82bb7
DIFF: https://github.com/llvm/llvm-project/commit/8bfe491763d9cc18f68d4caecbea9311c2b82bb7.diff
LOG: [RISCV] Split BEXT and BEXTI Write classes. NFC.
BEXT and BEXTI may behave differently from other Zbs instructions.
Split the write classes so these differences may be modeled by
scheduler models.
Differential Revision: https://reviews.llvm.org/D155476
Added:
Modified:
llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
llvm/lib/Target/RISCV/RISCVScheduleZb.td
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td b/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
index b709dc67ce84bd..6bf58d2b46e2ff 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
@@ -351,7 +351,7 @@ def BINV : ALU_rr<0b0110100, 0b001, "binv">,
Sched<[WriteSingleBit, ReadSingleBit, ReadSingleBit]>;
let IsSignExtendingOpW = 1 in
def BEXT : ALU_rr<0b0100100, 0b101, "bext">,
- Sched<[WriteSingleBit, ReadSingleBit, ReadSingleBit]>;
+ Sched<[WriteBEXT, ReadSingleBit, ReadSingleBit]>;
def BCLRI : RVBShift_ri<0b01001, 0b001, OPC_OP_IMM, "bclri">,
Sched<[WriteSingleBitImm, ReadSingleBitImm]>;
@@ -361,7 +361,7 @@ def BINVI : RVBShift_ri<0b01101, 0b001, OPC_OP_IMM, "binvi">,
Sched<[WriteSingleBitImm, ReadSingleBitImm]>;
let IsSignExtendingOpW = 1 in
def BEXTI : RVBShift_ri<0b01001, 0b101, OPC_OP_IMM, "bexti">,
- Sched<[WriteSingleBitImm, ReadSingleBitImm]>;
+ Sched<[WriteBEXTI, ReadSingleBitImm]>;
} // Predicates = [HasStdExtZbs]
// These instructions were named xperm.n and xperm.b in the last version of
diff --git a/llvm/lib/Target/RISCV/RISCVScheduleZb.td b/llvm/lib/Target/RISCV/RISCVScheduleZb.td
index 2283fe6f0a097c..0a16390e505356 100644
--- a/llvm/lib/Target/RISCV/RISCVScheduleZb.td
+++ b/llvm/lib/Target/RISCV/RISCVScheduleZb.td
@@ -30,8 +30,10 @@ def WriteORCB : SchedWrite;
def WriteCLMUL : SchedWrite; // CLMUL/CLMULR/CLMULH
// Zbs extension
-def WriteSingleBit : SchedWrite; // BCLR/BSET/BINV/BEXT
-def WriteSingleBitImm: SchedWrite; // BCLRI/BSETI/BINVI/BEXTI
+def WriteSingleBit : SchedWrite; // BCLR/BSET/BINV
+def WriteSingleBitImm: SchedWrite; // BCLRI/BSETI/BINVI
+def WriteBEXT : SchedWrite; // BEXT
+def WriteBEXTI : SchedWrite; // BEXTI
// Zbkb extension
def WriteBREV8 : SchedWrite; // brev8
@@ -132,6 +134,8 @@ multiclass UnsupportedSchedZbs {
let Unsupported = true in {
def : WriteRes<WriteSingleBit, []>;
def : WriteRes<WriteSingleBitImm, []>;
+def : WriteRes<WriteBEXT, []>;
+def : WriteRes<WriteBEXTI, []>;
def : ReadAdvance<ReadSingleBit, 0>;
def : ReadAdvance<ReadSingleBitImm, 0>;
More information about the llvm-commits
mailing list