Skip to content

Commit a2a4b60

Browse files
committed
[RISCV] Split ReadSFB into ReadSFBJmp and ReadSFBALU.
The operands may need to be available at different times.
1 parent e248955 commit a2a4b60

File tree

4 files changed

+24
-12
lines changed

4 files changed

+24
-12
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfo.td

+16-8
Original file line numberDiff line numberDiff line change
@@ -1394,7 +1394,8 @@ def PseudoCCMOVGPR : Pseudo<(outs GPR:$dst),
13941394
GPR:$rhs, cond,
13951395
(XLenVT GPR:$truev),
13961396
GPR:$falsev))]>,
1397-
Sched<[WriteSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB]>;
1397+
Sched<[WriteSFB, ReadSFBJmp, ReadSFBJmp,
1398+
ReadSFBALU, ReadSFBALU]>;
13981399
}
13991400

14001401
// Conditional binops, that updates update $dst to (op rs1, rs2) when condition
@@ -1406,33 +1407,40 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0, Size = 8,
14061407
def PseudoCCADD : Pseudo<(outs GPR:$dst),
14071408
(ins GPR:$lhs, GPR:$rhs, ixlenimm:$cc,
14081409
GPR:$falsev, GPR:$rs1, GPR:$rs2), []>,
1409-
Sched<[WriteSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB]>;
1410+
Sched<[WriteSFB, ReadSFBJmp, ReadSFBJmp,
1411+
ReadSFBALU, ReadSFBALU, ReadSFBALU]>;
14101412
def PseudoCCSUB : Pseudo<(outs GPR:$dst),
14111413
(ins GPR:$lhs, GPR:$rhs, ixlenimm:$cc,
14121414
GPR:$falsev, GPR:$rs1, GPR:$rs2), []>,
1413-
Sched<[WriteSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB]>;
1415+
Sched<[WriteSFB, ReadSFBJmp, ReadSFBJmp,
1416+
ReadSFBALU, ReadSFBALU, ReadSFBALU]>;
14141417
def PseudoCCAND : Pseudo<(outs GPR:$dst),
14151418
(ins GPR:$lhs, GPR:$rhs, ixlenimm:$cc,
14161419
GPR:$falsev, GPR:$rs1, GPR:$rs2), []>,
1417-
Sched<[WriteSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB]>;
1420+
Sched<[WriteSFB, ReadSFBJmp, ReadSFBJmp,
1421+
ReadSFBALU, ReadSFBALU, ReadSFBALU]>;
14181422
def PseudoCCOR : Pseudo<(outs GPR:$dst),
14191423
(ins GPR:$lhs, GPR:$rhs, ixlenimm:$cc,
14201424
GPR:$falsev, GPR:$rs1, GPR:$rs2), []>,
1421-
Sched<[WriteSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB]>;
1425+
Sched<[WriteSFB, ReadSFBJmp, ReadSFBJmp,
1426+
ReadSFBALU, ReadSFBALU, ReadSFBALU]>;
14221427
def PseudoCCXOR : Pseudo<(outs GPR:$dst),
14231428
(ins GPR:$lhs, GPR:$rhs, ixlenimm:$cc,
14241429
GPR:$falsev, GPR:$rs1, GPR:$rs2), []>,
1425-
Sched<[WriteSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB]>;
1430+
Sched<[WriteSFB, ReadSFBJmp, ReadSFBJmp,
1431+
ReadSFBALU, ReadSFBALU, ReadSFBALU]>;
14261432

14271433
// RV64I instructions
14281434
def PseudoCCADDW : Pseudo<(outs GPR:$dst),
14291435
(ins GPR:$lhs, GPR:$rhs, ixlenimm:$cc,
14301436
GPR:$falsev, GPR:$rs1, GPR:$rs2), []>,
1431-
Sched<[WriteSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB]>;
1437+
Sched<[WriteSFB, ReadSFBJmp, ReadSFBJmp,
1438+
ReadSFBALU, ReadSFBALU, ReadSFBALU]>;
14321439
def PseudoCCSUBW : Pseudo<(outs GPR:$dst),
14331440
(ins GPR:$lhs, GPR:$rhs, ixlenimm:$cc,
14341441
GPR:$falsev, GPR:$rs1, GPR:$rs2), []>,
1435-
Sched<[WriteSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB, ReadSFB]>;
1442+
Sched<[WriteSFB, ReadSFBJmp, ReadSFBJmp,
1443+
ReadSFBALU, ReadSFBALU, ReadSFBALU]>;
14361444
}
14371445

14381446
multiclass SelectCC_GPR_rrirr<DAGOperand valty, ValueType vt> {

llvm/lib/Target/RISCV/RISCVSchedSiFive7.td

+2-1
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,8 @@ def : ReadAdvance<ReadFClass16, 0>;
974974
def : ReadAdvance<ReadFClass32, 0>;
975975
def : ReadAdvance<ReadFClass64, 0>;
976976

977-
def : ReadAdvance<ReadSFB, 0>;
977+
def : ReadAdvance<ReadSFBJmp, 0>;
978+
def : ReadAdvance<ReadSFBALU, 0>;
978979

979980
// Bitmanip
980981
def : ReadAdvance<ReadRotateImm, 0>;

llvm/lib/Target/RISCV/RISCVSchedSyntacoreSCR1.td

+2-1
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,8 @@ def : ReadAdvance<ReadFMovF64ToI64, 0>;
192192
def : ReadAdvance<ReadFMovI64ToF64, 0>;
193193
def : ReadAdvance<ReadFClass32, 0>;
194194
def : ReadAdvance<ReadFClass64, 0>;
195-
def : ReadAdvance<ReadSFB, 0>;
195+
def : ReadAdvance<ReadSFBJmp, 0>;
196+
def : ReadAdvance<ReadSFBALU, 0>;
196197

197198
//===----------------------------------------------------------------------===//
198199
// Unsupported extensions

llvm/lib/Target/RISCV/RISCVSchedule.td

+4-2
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,8 @@ def WriteFST64 : SchedWrite; // Floating point dp store
115115

116116
// short forward branch for Bullet
117117
def WriteSFB : SchedWrite;
118-
def ReadSFB : SchedRead;
118+
def ReadSFBJmp : SchedRead;
119+
def ReadSFBALU : SchedRead;
119120

120121
/// Define scheduler resources associated with use operands.
121122
def ReadJmp : SchedRead;
@@ -248,7 +249,8 @@ multiclass UnsupportedSchedSFB {
248249
let Unsupported = true in {
249250
def : WriteRes<WriteSFB, []>;
250251

251-
def : ReadAdvance<ReadSFB, 0>;
252+
def : ReadAdvance<ReadSFBJmp, 0>;
253+
def : ReadAdvance<ReadSFBALU, 0>;
252254
} // Unsupported = true
253255
}
254256

0 commit comments

Comments
 (0)