Skip to content

Commit f37d21e

Browse files
lian wangLian Wang
authored andcommitted
[RISCV] Add schedule class for Zbt extension
Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D119808
1 parent f1806f9 commit f37d21e

File tree

4 files changed

+48
-8
lines changed

4 files changed

+48
-8
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoZb.td

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -429,24 +429,28 @@ def XPERM8 : ALU_rr<0b0010100, 0b100, "xperm8">, Sched<[]>;
429429

430430
let Predicates = [HasStdExtZbt] in {
431431
def CMIX : RVBTernaryR<0b11, 0b001, OPC_OP, "cmix", "$rd, $rs2, $rs1, $rs3">,
432-
Sched<[]>;
432+
Sched<[WriteCMix, ReadCMix, ReadCMix, ReadCMix]>;
433433
def CMOV : RVBTernaryR<0b11, 0b101, OPC_OP, "cmov", "$rd, $rs2, $rs1, $rs3">,
434-
Sched<[]>;
434+
Sched<[WriteCMov, ReadCMov, ReadCMov, ReadCMov]>;
435435
def FSL : RVBTernaryR<0b10, 0b001, OPC_OP, "fsl", "$rd, $rs1, $rs3, $rs2">,
436-
Sched<[]>;
436+
Sched<[WriteFSReg, ReadFSReg, ReadFSReg, ReadFSReg]>;
437437
def FSR : RVBTernaryR<0b10, 0b101, OPC_OP, "fsr", "$rd, $rs1, $rs3, $rs2">,
438-
Sched<[]>;
438+
Sched<[WriteFSReg, ReadFSReg, ReadFSReg, ReadFSReg]>;
439439
def FSRI : RVBTernaryImm6<0b101, OPC_OP_IMM, "fsri",
440-
"$rd, $rs1, $rs3, $shamt">, Sched<[]>;
440+
"$rd, $rs1, $rs3, $shamt">,
441+
Sched<[WriteFSRImm, ReadFSRImm, ReadFSRImm]>;
441442
} // Predicates = [HasStdExtZbt]
442443

443444
let Predicates = [HasStdExtZbt, IsRV64] in {
444445
def FSLW : RVBTernaryR<0b10, 0b001, OPC_OP_32,
445-
"fslw", "$rd, $rs1, $rs3, $rs2">, Sched<[]>;
446+
"fslw", "$rd, $rs1, $rs3, $rs2">,
447+
Sched<[WriteFSReg32, ReadFSReg32, ReadFSReg32, ReadFSReg32]>;
446448
def FSRW : RVBTernaryR<0b10, 0b101, OPC_OP_32, "fsrw",
447-
"$rd, $rs1, $rs3, $rs2">, Sched<[]>;
449+
"$rd, $rs1, $rs3, $rs2">,
450+
Sched<[WriteFSReg32, ReadFSReg32, ReadFSReg32, ReadFSReg32]>;
448451
def FSRIW : RVBTernaryImm5<0b10, 0b101, OPC_OP_IMM_32,
449-
"fsriw", "$rd, $rs1, $rs3, $shamt">, Sched<[]>;
452+
"fsriw", "$rd, $rs1, $rs3, $shamt">,
453+
Sched<[WriteFSRImm32, ReadFSRImm32, ReadFSRImm32]>;
450454
} // Predicates = [HasStdExtZbt, IsRV64]
451455

452456
let Predicates = [HasStdExtZbb] in {

llvm/lib/Target/RISCV/RISCVSchedRocket.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,5 +245,6 @@ defm : UnsupportedSchedZbs;
245245
defm : UnsupportedSchedZbe;
246246
defm : UnsupportedSchedZbf;
247247
defm : UnsupportedSchedZbm;
248+
defm : UnsupportedSchedZbt;
248249
defm : UnsupportedSchedZfh;
249250
}

llvm/lib/Target/RISCV/RISCVSchedSiFive7.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,5 +232,6 @@ defm : UnsupportedSchedZbs;
232232
defm : UnsupportedSchedZbe;
233233
defm : UnsupportedSchedZbf;
234234
defm : UnsupportedSchedZbm;
235+
defm : UnsupportedSchedZbt;
235236
defm : UnsupportedSchedZfh;
236237
}

llvm/lib/Target/RISCV/RISCVScheduleB.td

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ def WriteBFP32 : SchedWrite; // BFPW
4646
// Zbm extension
4747
def WriteBMatrix : SchedWrite; // bmator/bmatxor/bmatflip
4848

49+
// Zbt extension
50+
def WriteCMix : SchedWrite; // cmix
51+
def WriteCMov : SchedWrite; // cmov
52+
def WriteFSReg : SchedWrite; // fsl/fsr
53+
def WriteFSRImm : SchedWrite; // fsri
54+
def WriteFSReg32 : SchedWrite; // fslw/fsrw
55+
def WriteFSRImm32 : SchedWrite; // fsriw
56+
4957
/// Define scheduler resources associated with use operands.
5058

5159
// Zba extension
@@ -86,6 +94,14 @@ def ReadBFP32 : SchedRead; // BFPW
8694
// Zbm extension
8795
def ReadBMatrix : SchedRead; // bmator/bmatxor/bmatflip
8896

97+
// Zbt extension
98+
def ReadCMix : SchedRead; // cmix
99+
def ReadCMov : SchedRead; // cmov
100+
def ReadFSReg : SchedRead; // fsl/fsr
101+
def ReadFSRImm : SchedRead; // fsri
102+
def ReadFSReg32 : SchedRead; // fslw/fsrw
103+
def ReadFSRImm32 : SchedRead; // fsriw
104+
89105
/// Define default scheduler resources for B.
90106

91107
multiclass UnsupportedSchedZba {
@@ -177,3 +193,21 @@ def : WriteRes<WriteBMatrix, []>;
177193
def : ReadAdvance<ReadBMatrix, 0>;
178194
}
179195
}
196+
197+
multiclass UnsupportedSchedZbt {
198+
let Unsupported = true in {
199+
def : WriteRes<WriteCMix, []>;
200+
def : WriteRes<WriteCMov, []>;
201+
def : WriteRes<WriteFSReg, []>;
202+
def : WriteRes<WriteFSRImm, []>;
203+
def : WriteRes<WriteFSReg32, []>;
204+
def : WriteRes<WriteFSRImm32, []>;
205+
206+
def : ReadAdvance<ReadCMix, 0>;
207+
def : ReadAdvance<ReadCMov, 0>;
208+
def : ReadAdvance<ReadFSReg, 0>;
209+
def : ReadAdvance<ReadFSRImm, 0>;
210+
def : ReadAdvance<ReadFSReg32, 0>;
211+
def : ReadAdvance<ReadFSRImm32, 0>;
212+
}
213+
}

0 commit comments

Comments
 (0)