Skip to content

Commit 06451aa

Browse files
author
Francis Visoiu Mistrih
committed
[RISCV] Add scheduling info for Zcmp
The order of the entries in the list is: outs, ins, Defs, Uses, implicit-defs, implicit uses, where the last two are added programatically during codegen depending on the registers saved/restored and are not described in the TD files.
1 parent c1e9883 commit 06451aa

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoZc.td

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -183,27 +183,44 @@ def C_SH : CStoreH_rri<0b100011, 0b0, "c.sh">,
183183
let DecoderNamespace = "RVZcmp", Predicates = [HasStdExtZcmp],
184184
Defs = [X10, X11], hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
185185
def CM_MVA01S : RVInst16CA<0b101011, 0b11, 0b10, (outs),
186-
(ins SR07:$rs1, SR07:$rs2), "cm.mva01s", "$rs1, $rs2">;
186+
(ins SR07:$rs1, SR07:$rs2), "cm.mva01s", "$rs1, $rs2">,
187+
Sched<[ReadIALU, ReadIALU, WriteIALU, WriteIALU]>;
187188

188189
def CM_MVSA01 : RVInst16CA<0b101011, 0b01, 0b10, (outs SR07:$rs1, SR07:$rs2),
189-
(ins), "cm.mvsa01", "$rs1, $rs2">;
190+
(ins), "cm.mvsa01", "$rs1, $rs2">,
191+
Sched<[WriteIALU, WriteIALU, WriteIALU, WriteIALU]>;
190192
} // DecoderNamespace = "RVZcmp", Predicates = [HasStdExtZcmp]...
191193

192194
let DecoderNamespace = "RVZcmp", Predicates = [HasStdExtZcmp] in {
193195
let hasSideEffects = 0, mayLoad = 0, mayStore = 1, Uses = [X2], Defs = [X2] in
194-
def CM_PUSH : RVInstZcCPPP<0b11000, "cm.push">;
196+
def CM_PUSH : RVInstZcCPPP<0b11000, "cm.push">,
197+
Sched<[WriteIALU, ReadIALU, ReadStoreData, ReadStoreData,
198+
ReadStoreData, ReadStoreData, ReadStoreData, ReadStoreData,
199+
ReadStoreData, ReadStoreData, ReadStoreData, ReadStoreData,
200+
ReadStoreData, ReadStoreData, ReadStoreData]>;
195201

196202
let hasSideEffects = 0, mayLoad = 1, mayStore = 0, isReturn = 1,
197203
Uses = [X2], Defs = [X2] in
198-
def CM_POPRET : RVInstZcCPPP<0b11110, "cm.popret">;
204+
def CM_POPRET : RVInstZcCPPP<0b11110, "cm.popret">,
205+
Sched<[WriteIALU, ReadIALU, WriteLDW, WriteLDW,
206+
WriteLDW, WriteLDW, WriteLDW, WriteLDW, WriteLDW,
207+
WriteLDW, WriteLDW, WriteLDW, WriteLDW, WriteLDW,
208+
WriteLDW]>;
199209

200210
let hasSideEffects = 0, mayLoad = 1, mayStore = 0, isReturn = 1,
201211
Uses = [X2], Defs = [X2, X10] in
202-
def CM_POPRETZ : RVInstZcCPPP<0b11100, "cm.popretz">;
212+
def CM_POPRETZ : RVInstZcCPPP<0b11100, "cm.popretz">,
213+
Sched<[WriteIALU, WriteIALU, ReadIALU, WriteLDW, WriteLDW,
214+
WriteLDW, WriteLDW, WriteLDW, WriteLDW, WriteLDW,
215+
WriteLDW, WriteLDW, WriteLDW, WriteLDW, WriteLDW,
216+
WriteLDW]>;
203217

204218
let hasSideEffects = 0, mayLoad = 1, mayStore = 0,
205219
Uses = [X2], Defs = [X2] in
206-
def CM_POP : RVInstZcCPPP<0b11010, "cm.pop">;
220+
def CM_POP : RVInstZcCPPP<0b11010, "cm.pop">,
221+
Sched<[WriteIALU, ReadIALU, WriteLDW, WriteLDW, WriteLDW,
222+
WriteLDW, WriteLDW, WriteLDW, WriteLDW, WriteLDW,
223+
WriteLDW, WriteLDW, WriteLDW, WriteLDW, WriteLDW]>;
207224
} // DecoderNamespace = "RVZcmp", Predicates = [HasStdExtZcmp]...
208225

209226
let DecoderNamespace = "RVZcmt", Predicates = [HasStdExtZcmt],

0 commit comments

Comments
 (0)