Skip to content

Commit 1a364b4

Browse files
authored
[RISCV][NFC] Add UnsupportedSched<F|D|A> multiclasses (#95948)
These multiclasses will be used by new processors (e.g. #95427)
1 parent d72b57b commit 1a364b4

File tree

2 files changed

+108
-96
lines changed

2 files changed

+108
-96
lines changed

llvm/lib/Target/RISCV/RISCVSchedSyntacoreSCR1.td

Lines changed: 4 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -76,58 +76,6 @@ def : WriteRes<WriteLDW, [SCR1_LSU]>;
7676
def : WriteRes<WriteLDD, [SCR1_LSU]>;
7777
}
7878

79-
let Unsupported = true in {
80-
// Atomic memory
81-
def : WriteRes<WriteAtomicW, [SCR1_LSU]>;
82-
def : WriteRes<WriteAtomicD, [SCR1_LSU]>;
83-
def : WriteRes<WriteAtomicLDW, [SCR1_LSU]>;
84-
def : WriteRes<WriteAtomicLDD, [SCR1_LSU]>;
85-
def : WriteRes<WriteAtomicSTW, [SCR1_LSU]>;
86-
def : WriteRes<WriteAtomicSTD, [SCR1_LSU]>;
87-
88-
// FP load/store
89-
def : WriteRes<WriteFST32, [SCR1_LSU]>;
90-
def : WriteRes<WriteFST64, [SCR1_LSU]>;
91-
def : WriteRes<WriteFLD32, [SCR1_LSU]>;
92-
def : WriteRes<WriteFLD64, [SCR1_LSU]>;
93-
94-
// FP instructions
95-
def : WriteRes<WriteFAdd32, []>;
96-
def : WriteRes<WriteFSGNJ32, []>;
97-
def : WriteRes<WriteFMinMax32, []>;
98-
def : WriteRes<WriteFAdd64, []>;
99-
def : WriteRes<WriteFSGNJ64, []>;
100-
def : WriteRes<WriteFMinMax64, []>;
101-
def : WriteRes<WriteFCvtI32ToF32, []>;
102-
def : WriteRes<WriteFCvtI32ToF64, []>;
103-
def : WriteRes<WriteFCvtI64ToF32, []>;
104-
def : WriteRes<WriteFCvtI64ToF64, []>;
105-
def : WriteRes<WriteFCvtF32ToI32, []>;
106-
def : WriteRes<WriteFCvtF32ToI64, []>;
107-
def : WriteRes<WriteFCvtF64ToI32, []>;
108-
def : WriteRes<WriteFCvtF64ToI64, []>;
109-
def : WriteRes<WriteFCvtF32ToF64, []>;
110-
def : WriteRes<WriteFCvtF64ToF32, []>;
111-
def : WriteRes<WriteFClass32, []>;
112-
def : WriteRes<WriteFClass64, []>;
113-
def : WriteRes<WriteFCmp32, []>;
114-
def : WriteRes<WriteFCmp64, []>;
115-
def : WriteRes<WriteFMovF32ToI32, []>;
116-
def : WriteRes<WriteFMovI32ToF32, []>;
117-
def : WriteRes<WriteFMovF64ToI64, []>;
118-
def : WriteRes<WriteFMovI64ToF64, []>;
119-
def : WriteRes<WriteFMul32, []>;
120-
def : WriteRes<WriteFMA32, []>;
121-
def : WriteRes<WriteFMul64, []>;
122-
def : WriteRes<WriteFMA64, []>;
123-
def : WriteRes<WriteFDiv32, []>;
124-
def : WriteRes<WriteFDiv64, []>;
125-
def : WriteRes<WriteFSqrt32, []>;
126-
def : WriteRes<WriteFSqrt64, []>;
127-
128-
def : WriteRes<WriteSFB, []>;
129-
}
130-
13179
// Others
13280
def : WriteRes<WriteCSR, []>;
13381
def : WriteRes<WriteNop, []>;
@@ -153,55 +101,15 @@ def : ReadAdvance<ReadIRem, 0>;
153101
def : ReadAdvance<ReadIRem32, 0>;
154102
def : ReadAdvance<ReadIMul, 0>;
155103
def : ReadAdvance<ReadIMul32, 0>;
156-
def : ReadAdvance<ReadAtomicWA, 0>;
157-
def : ReadAdvance<ReadAtomicWD, 0>;
158-
def : ReadAdvance<ReadAtomicDA, 0>;
159-
def : ReadAdvance<ReadAtomicDD, 0>;
160-
def : ReadAdvance<ReadAtomicLDW, 0>;
161-
def : ReadAdvance<ReadAtomicLDD, 0>;
162-
def : ReadAdvance<ReadAtomicSTW, 0>;
163-
def : ReadAdvance<ReadAtomicSTD, 0>;
164-
def : ReadAdvance<ReadFStoreData, 0>;
165-
def : ReadAdvance<ReadFMemBase, 0>;
166-
def : ReadAdvance<ReadFAdd32, 0>;
167-
def : ReadAdvance<ReadFAdd64, 0>;
168-
def : ReadAdvance<ReadFMul32, 0>;
169-
def : ReadAdvance<ReadFMul64, 0>;
170-
def : ReadAdvance<ReadFMA32, 0>;
171-
def : ReadAdvance<ReadFMA32Addend, 0>;
172-
def : ReadAdvance<ReadFMA64, 0>;
173-
def : ReadAdvance<ReadFMA64Addend, 0>;
174-
def : ReadAdvance<ReadFDiv32, 0>;
175-
def : ReadAdvance<ReadFDiv64, 0>;
176-
def : ReadAdvance<ReadFSqrt32, 0>;
177-
def : ReadAdvance<ReadFSqrt64, 0>;
178-
def : ReadAdvance<ReadFCmp32, 0>;
179-
def : ReadAdvance<ReadFCmp64, 0>;
180-
def : ReadAdvance<ReadFSGNJ32, 0>;
181-
def : ReadAdvance<ReadFSGNJ64, 0>;
182-
def : ReadAdvance<ReadFMinMax32, 0>;
183-
def : ReadAdvance<ReadFMinMax64, 0>;
184-
def : ReadAdvance<ReadFCvtF32ToI32, 0>;
185-
def : ReadAdvance<ReadFCvtF32ToI64, 0>;
186-
def : ReadAdvance<ReadFCvtF64ToI32, 0>;
187-
def : ReadAdvance<ReadFCvtF64ToI64, 0>;
188-
def : ReadAdvance<ReadFCvtI32ToF32, 0>;
189-
def : ReadAdvance<ReadFCvtI32ToF64, 0>;
190-
def : ReadAdvance<ReadFCvtI64ToF32, 0>;
191-
def : ReadAdvance<ReadFCvtI64ToF64, 0>;
192-
def : ReadAdvance<ReadFCvtF32ToF64, 0>;
193-
def : ReadAdvance<ReadFCvtF64ToF32, 0>;
194-
def : ReadAdvance<ReadFMovF32ToI32, 0>;
195-
def : ReadAdvance<ReadFMovI32ToF32, 0>;
196-
def : ReadAdvance<ReadFMovF64ToI64, 0>;
197-
def : ReadAdvance<ReadFMovI64ToF64, 0>;
198-
def : ReadAdvance<ReadFClass32, 0>;
199-
def : ReadAdvance<ReadFClass64, 0>;
200104
def : ReadAdvance<ReadSFBJmp, 0>;
201105
def : ReadAdvance<ReadSFBALU, 0>;
202106

203107
//===----------------------------------------------------------------------===//
204108
// Unsupported extensions
109+
defm : UnsupportedSchedA;
110+
defm : UnsupportedSchedD;
111+
defm : UnsupportedSchedF;
112+
defm : UnsupportedSchedSFB;
205113
defm : UnsupportedSchedV;
206114
defm : UnsupportedSchedZabha;
207115
defm : UnsupportedSchedZba;

llvm/lib/Target/RISCV/RISCVSchedule.td

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,90 @@ def : ReadAdvance<ReadFSqrt16, 0>;
257257
} // Unsupported = true
258258
}
259259

260+
multiclass UnsupportedSchedF {
261+
let Unsupported = true in {
262+
def : WriteRes<WriteFST32, []>;
263+
def : WriteRes<WriteFLD32, []>;
264+
def : WriteRes<WriteFAdd32, []>;
265+
def : WriteRes<WriteFSGNJ32, []>;
266+
def : WriteRes<WriteFMinMax32, []>;
267+
def : WriteRes<WriteFCvtI32ToF32, []>;
268+
def : WriteRes<WriteFCvtI64ToF32, []>;
269+
def : WriteRes<WriteFCvtF32ToI32, []>;
270+
def : WriteRes<WriteFCvtF32ToI64, []>;
271+
def : WriteRes<WriteFClass32, []>;
272+
def : WriteRes<WriteFCmp32, []>;
273+
def : WriteRes<WriteFMovF32ToI32, []>;
274+
def : WriteRes<WriteFMovI32ToF32, []>;
275+
def : WriteRes<WriteFMul32, []>;
276+
def : WriteRes<WriteFMA32, []>;
277+
def : WriteRes<WriteFDiv32, []>;
278+
def : WriteRes<WriteFSqrt32, []>;
279+
280+
def : ReadAdvance<ReadFAdd32, 0>;
281+
def : ReadAdvance<ReadFMul32, 0>;
282+
def : ReadAdvance<ReadFMA32, 0>;
283+
def : ReadAdvance<ReadFMA32Addend, 0>;
284+
def : ReadAdvance<ReadFDiv32, 0>;
285+
def : ReadAdvance<ReadFSqrt32, 0>;
286+
def : ReadAdvance<ReadFCmp32, 0>;
287+
def : ReadAdvance<ReadFSGNJ32, 0>;
288+
def : ReadAdvance<ReadFMinMax32, 0>;
289+
def : ReadAdvance<ReadFCvtF32ToI32, 0>;
290+
def : ReadAdvance<ReadFCvtF32ToI64, 0>;
291+
def : ReadAdvance<ReadFCvtI32ToF32, 0>;
292+
def : ReadAdvance<ReadFCvtI64ToF32, 0>;
293+
def : ReadAdvance<ReadFMovF32ToI32, 0>;
294+
def : ReadAdvance<ReadFMovI32ToF32, 0>;
295+
def : ReadAdvance<ReadFClass32, 0>;
296+
def : ReadAdvance<ReadFStoreData, 0>;
297+
def : ReadAdvance<ReadFMemBase, 0>;
298+
} // Unsupported = true
299+
}
300+
301+
multiclass UnsupportedSchedD {
302+
let Unsupported = true in {
303+
def : WriteRes<WriteFST64, []>;
304+
def : WriteRes<WriteFLD64, []>;
305+
def : WriteRes<WriteFAdd64, []>;
306+
def : WriteRes<WriteFSGNJ64, []>;
307+
def : WriteRes<WriteFMinMax64, []>;
308+
def : WriteRes<WriteFCvtI32ToF64, []>;
309+
def : WriteRes<WriteFCvtI64ToF64, []>;
310+
def : WriteRes<WriteFCvtF64ToI32, []>;
311+
def : WriteRes<WriteFCvtF64ToI64, []>;
312+
def : WriteRes<WriteFCvtF32ToF64, []>;
313+
def : WriteRes<WriteFCvtF64ToF32, []>;
314+
def : WriteRes<WriteFClass64, []>;
315+
def : WriteRes<WriteFCmp64, []>;
316+
def : WriteRes<WriteFMovF64ToI64, []>;
317+
def : WriteRes<WriteFMovI64ToF64, []>;
318+
def : WriteRes<WriteFMul64, []>;
319+
def : WriteRes<WriteFMA64, []>;
320+
def : WriteRes<WriteFDiv64, []>;
321+
def : WriteRes<WriteFSqrt64, []>;
322+
323+
def : ReadAdvance<ReadFAdd64, 0>;
324+
def : ReadAdvance<ReadFMul64, 0>;
325+
def : ReadAdvance<ReadFMA64, 0>;
326+
def : ReadAdvance<ReadFMA64Addend, 0>;
327+
def : ReadAdvance<ReadFDiv64, 0>;
328+
def : ReadAdvance<ReadFSqrt64, 0>;
329+
def : ReadAdvance<ReadFCmp64, 0>;
330+
def : ReadAdvance<ReadFSGNJ64, 0>;
331+
def : ReadAdvance<ReadFMinMax64, 0>;
332+
def : ReadAdvance<ReadFCvtF64ToI32, 0>;
333+
def : ReadAdvance<ReadFCvtF64ToI64, 0>;
334+
def : ReadAdvance<ReadFCvtI32ToF64, 0>;
335+
def : ReadAdvance<ReadFCvtI64ToF64, 0>;
336+
def : ReadAdvance<ReadFCvtF32ToF64, 0>;
337+
def : ReadAdvance<ReadFCvtF64ToF32, 0>;
338+
def : ReadAdvance<ReadFMovF64ToI64, 0>;
339+
def : ReadAdvance<ReadFMovI64ToF64, 0>;
340+
def : ReadAdvance<ReadFClass64, 0>;
341+
} // Unsupported = true
342+
}
343+
260344
multiclass UnsupportedSchedSFB {
261345
let Unsupported = true in {
262346
def : WriteRes<WriteSFB, []>;
@@ -293,6 +377,26 @@ def : ReadAdvance<ReadAtomicHD, 0>;
293377
} // Unsupported = true
294378
}
295379

380+
multiclass UnsupportedSchedA {
381+
let Unsupported = true in {
382+
def : WriteRes<WriteAtomicW, []>;
383+
def : WriteRes<WriteAtomicD, []>;
384+
def : WriteRes<WriteAtomicLDW, []>;
385+
def : WriteRes<WriteAtomicLDD, []>;
386+
def : WriteRes<WriteAtomicSTW, []>;
387+
def : WriteRes<WriteAtomicSTD, []>;
388+
389+
def : ReadAdvance<ReadAtomicWA, 0>;
390+
def : ReadAdvance<ReadAtomicWD, 0>;
391+
def : ReadAdvance<ReadAtomicDA, 0>;
392+
def : ReadAdvance<ReadAtomicDD, 0>;
393+
def : ReadAdvance<ReadAtomicLDW, 0>;
394+
def : ReadAdvance<ReadAtomicLDD, 0>;
395+
def : ReadAdvance<ReadAtomicSTW, 0>;
396+
def : ReadAdvance<ReadAtomicSTD, 0>;
397+
} // Unsupported = true
398+
}
399+
296400
// Include the scheduler resources for other instruction extensions.
297401
include "RISCVScheduleZb.td"
298402
include "RISCVScheduleV.td"

0 commit comments

Comments
 (0)