[llvm] 3967abc - [RISCV] Add missing scheduler classes to Zbkb and Zbkx instructions.
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 23 21:44:35 PDT 2022
Author: Craig Topper
Date: 2022-09-23T21:38:42-07:00
New Revision: 3967abcc0b839875af2cb13a74cc463fd5795ac3
URL: https://github.com/llvm/llvm-project/commit/3967abcc0b839875af2cb13a74cc463fd5795ac3
DIFF: https://github.com/llvm/llvm-project/commit/3967abcc0b839875af2cb13a74cc463fd5795ac3.diff
LOG: [RISCV] Add missing scheduler classes to Zbkb and Zbkx instructions.
Added:
Modified:
llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
llvm/lib/Target/RISCV/RISCVSchedRocket.td
llvm/lib/Target/RISCV/RISCVSchedSiFive7.td
llvm/lib/Target/RISCV/RISCVScheduleB.td
Removed:
################################################################################
diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td b/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
index 6604c8be2ddb..50ecd8b8da99 100644
--- a/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
+++ b/llvm/lib/Target/RISCV/RISCVInstrInfoZb.td
@@ -374,8 +374,10 @@ def BEXTI : RVBShift_ri<0b01001, 0b101, OPC_OP_IMM, "bexti">,
// the draft bit manipulation specification they were included in. However, we
// use the mnemonics given to them in the ratified Zbkx extension.
let Predicates = [HasStdExtZbkx] in {
-def XPERM4 : ALU_rr<0b0010100, 0b010, "xperm4">, Sched<[]>;
-def XPERM8 : ALU_rr<0b0010100, 0b100, "xperm8">, Sched<[]>;
+def XPERM4 : ALU_rr<0b0010100, 0b010, "xperm4">,
+ Sched<[WriteXPERM, ReadXPERM, ReadXPERM]>;
+def XPERM8 : ALU_rr<0b0010100, 0b100, "xperm8">,
+ Sched<[WriteXPERM, ReadXPERM, ReadXPERM]>;
} // Predicates = [HasStdExtZbkx]
let Predicates = [HasStdExtZbb] in {
@@ -464,13 +466,13 @@ def ORC_B : RVBUnary<0b0010100, 0b00111, 0b101, OPC_OP_IMM, "orc.b">,
let Predicates = [HasStdExtZbkb] in
def BREV8 : RVBUnary<0b0110100, 0b00111, 0b101, OPC_OP_IMM, "brev8">,
- Sched<[]>;
+ Sched<[WriteBREV8, ReadBREV8]>;
let Predicates = [HasStdExtZbkb, IsRV32] in {
def ZIP_RV32 : RVBUnary<0b0000100, 0b01111, 0b001, OPC_OP_IMM, "zip">,
- Sched<[]>;
+ Sched<[WriteZIP, ReadZIP]>;
def UNZIP_RV32 : RVBUnary<0b0000100, 0b01111, 0b101, OPC_OP_IMM, "unzip">,
- Sched<[]>;
+ Sched<[WriteZIP, ReadZIP]>;
} // Predicates = [HasStdExtZbkb, IsRV32]
diff --git a/llvm/lib/Target/RISCV/RISCVSchedRocket.td b/llvm/lib/Target/RISCV/RISCVSchedRocket.td
index f39f7c71c23f..4bfd352edca3 100644
--- a/llvm/lib/Target/RISCV/RISCVSchedRocket.td
+++ b/llvm/lib/Target/RISCV/RISCVSchedRocket.td
@@ -244,5 +244,6 @@ defm : UnsupportedSchedZbb;
defm : UnsupportedSchedZbc;
defm : UnsupportedSchedZbs;
defm : UnsupportedSchedZbkb;
+defm : UnsupportedSchedZbkx;
defm : UnsupportedSchedZfh;
}
diff --git a/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td b/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td
index 86d77e68b3c1..32e2b1f6d1e4 100644
--- a/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td
+++ b/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td
@@ -231,5 +231,6 @@ defm : UnsupportedSchedZbb;
defm : UnsupportedSchedZbc;
defm : UnsupportedSchedZbs;
defm : UnsupportedSchedZbkb;
+defm : UnsupportedSchedZbkx;
defm : UnsupportedSchedZfh;
}
diff --git a/llvm/lib/Target/RISCV/RISCVScheduleB.td b/llvm/lib/Target/RISCV/RISCVScheduleB.td
index b0947500fecc..324216df0380 100644
--- a/llvm/lib/Target/RISCV/RISCVScheduleB.td
+++ b/llvm/lib/Target/RISCV/RISCVScheduleB.td
@@ -34,10 +34,13 @@ def WriteSingleBit : SchedWrite; // BCLR/BSET/BINV/BEXT
def WriteSingleBitImm: SchedWrite; // BCLRI/BSETI/BINVI/BEXTI
// Zbkb extension
+def WriteBREV8 : SchedWrite; // brev8
def WritePACK : SchedWrite; // pack/packh
def WritePACK32 : SchedWrite; // packw
-def WritePACKU : SchedWrite; // packu
-def WritePACKU32 : SchedWrite; // packuw
+def WriteZIP : SchedWrite; // zip/unzip
+
+// Zbkx extension
+def WriteXPERM : SchedWrite; // xperm4/xperm8
/// Define scheduler resources associated with use operands.
@@ -67,10 +70,13 @@ def ReadSingleBit : SchedRead; // BCLR/BSET/BINV/BEXT
def ReadSingleBitImm: SchedRead; // BCLRI/BSETI/BINVI/BEXTI
// Zbkb extension
+def ReadBREV8 : SchedRead; // brev8
def ReadPACK : SchedRead; // pack/packh
def ReadPACK32 : SchedRead; // packw
-def ReadPACKU : SchedRead; // packu
-def ReadPACKU32 : SchedRead; // packuw
+def ReadZIP : SchedRead; // zip/unzip
+
+// Zbkx extension
+def ReadXPERM : SchedRead; // xperm4/xperm8
/// Define default scheduler resources for B.
@@ -134,14 +140,22 @@ def : ReadAdvance<ReadSingleBitImm, 0>;
multiclass UnsupportedSchedZbkb {
let Unsupported = true in {
+def : WriteRes<WriteBREV8, []>;
def : WriteRes<WritePACK, []>;
def : WriteRes<WritePACK32, []>;
-def : WriteRes<WritePACKU, []>;
-def : WriteRes<WritePACKU32, []>;
+def : WriteRes<WriteZIP, []>;
+def : ReadAdvance<ReadBREV8, 0>;
def : ReadAdvance<ReadPACK, 0>;
def : ReadAdvance<ReadPACK32, 0>;
-def : ReadAdvance<ReadPACKU, 0>;
-def : ReadAdvance<ReadPACKU32, 0>;
+def : ReadAdvance<ReadZIP, 0>;
+}
+}
+
+multiclass UnsupportedSchedZbkx {
+let Unsupported = true in {
+def : WriteRes<WriteXPERM, []>;
+
+def : ReadAdvance<ReadXPERM, 0>;
}
}
More information about the llvm-commits
mailing list