diff --git a/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td b/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td index c79d339d672ca..077b2d322a326 100644 --- a/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td +++ b/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td @@ -76,35 +76,6 @@ def : WriteRes { let ResourceCycles = [1, 15]; } -// Bitmanip -let Latency = 3 in { -// Rotates are in the late-B ALU. -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; - -// clz[w]/ctz[w] are in the late-B ALU. -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; - -// cpop[w] look exactly like multiply. -def : WriteRes; -def : WriteRes; - -// orc.b is in the late-B ALU. -def : WriteRes; - -// rev8 is in the late-A and late-B ALUs. -def : WriteRes; - -// shNadd[.uw] is on the early-B and late-B ALUs. -def : WriteRes; -def : WriteRes; -} - // Memory def : WriteRes; def : WriteRes; @@ -308,188 +279,11 @@ def : ReadAdvance; def : ReadAdvance; -// 6. Configuration-Setting Instructions -def : ReadAdvance; -def : ReadAdvance; - -// 7. Vector Loads and Stores -def : ReadAdvance; -def : ReadAdvance; -defm "" : LMULReadAdvance<"ReadVSTEV", 0>; -defm "" : LMULReadAdvance<"ReadVSTM", 0>; -def : ReadAdvance; -def : ReadAdvance; -defm "" : LMULReadAdvance<"ReadVSTS8V", 0>; -defm "" : LMULReadAdvance<"ReadVSTS16V", 0>; -defm "" : LMULReadAdvance<"ReadVSTS32V", 0>; -defm "" : LMULReadAdvance<"ReadVSTS64V", 0>; -defm "" : LMULReadAdvance<"ReadVLDUXV", 0>; -defm "" : LMULReadAdvance<"ReadVLDOXV", 0>; -defm "" : LMULReadAdvance<"ReadVSTUX8", 0>; -defm "" : LMULReadAdvance<"ReadVSTUX16", 0>; -defm "" : LMULReadAdvance<"ReadVSTUX32", 0>; -defm "" : LMULReadAdvance<"ReadVSTUX64", 0>; -defm "" : LMULReadAdvance<"ReadVSTUXV", 0>; -defm "" : LMULReadAdvance<"ReadVSTUX8V", 0>; -defm "" : LMULReadAdvance<"ReadVSTUX16V", 0>; -defm "" : LMULReadAdvance<"ReadVSTUX32V", 0>; -defm "" : LMULReadAdvance<"ReadVSTUX64V", 0>; -defm "" : LMULReadAdvance<"ReadVSTOX8", 0>; -defm "" : LMULReadAdvance<"ReadVSTOX16", 0>; -defm "" : LMULReadAdvance<"ReadVSTOX32", 0>; -defm "" : LMULReadAdvance<"ReadVSTOX64", 0>; -defm "" : LMULReadAdvance<"ReadVSTOXV", 0>; -defm "" : LMULReadAdvance<"ReadVSTOX8V", 0>; -defm "" : LMULReadAdvance<"ReadVSTOX16V", 0>; -defm "" : LMULReadAdvance<"ReadVSTOX32V", 0>; -defm "" : LMULReadAdvance<"ReadVSTOX64V", 0>; -// LMUL Aware -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; - -// 12. Vector Integer Arithmetic Instructions -defm : LMULReadAdvance<"ReadVIALUV", 0>; -defm : LMULReadAdvance<"ReadVIALUX", 0>; -defm : LMULReadAdvanceW<"ReadVIWALUV", 0>; -defm : LMULReadAdvanceW<"ReadVIWALUX", 0>; -defm : LMULReadAdvance<"ReadVExtV", 0>; -defm : LMULReadAdvance<"ReadVICALUV", 0>; -defm : LMULReadAdvance<"ReadVICALUX", 0>; -defm : LMULReadAdvance<"ReadVShiftV", 0>; -defm : LMULReadAdvance<"ReadVShiftX", 0>; -defm : LMULReadAdvanceW<"ReadVNShiftV", 0>; -defm : LMULReadAdvanceW<"ReadVNShiftX", 0>; -defm : LMULReadAdvance<"ReadVICmpV", 0>; -defm : LMULReadAdvance<"ReadVICmpX", 0>; -defm : LMULReadAdvance<"ReadVIMulV", 0>; -defm : LMULReadAdvance<"ReadVIMulX", 0>; -defm : LMULSEWReadAdvance<"ReadVIDivV", 0>; -defm : LMULSEWReadAdvance<"ReadVIDivX", 0>; -defm : LMULReadAdvanceW<"ReadVIWMulV", 0>; -defm : LMULReadAdvanceW<"ReadVIWMulX", 0>; -defm : LMULReadAdvance<"ReadVIMulAddV", 0>; -defm : LMULReadAdvance<"ReadVIMulAddX", 0>; -defm : LMULReadAdvanceW<"ReadVIWMulAddV", 0>; -defm : LMULReadAdvanceW<"ReadVIWMulAddX", 0>; -defm : LMULReadAdvance<"ReadVIMergeV", 0>; -defm : LMULReadAdvance<"ReadVIMergeX", 0>; -defm : LMULReadAdvance<"ReadVIMovV", 0>; -defm : LMULReadAdvance<"ReadVIMovX", 0>; - -// 13. Vector Fixed-Point Arithmetic Instructions -defm "" : LMULReadAdvance<"ReadVSALUV", 0>; -defm "" : LMULReadAdvance<"ReadVSALUX", 0>; -defm "" : LMULReadAdvance<"ReadVAALUV", 0>; -defm "" : LMULReadAdvance<"ReadVAALUX", 0>; -defm "" : LMULReadAdvance<"ReadVSMulV", 0>; -defm "" : LMULReadAdvance<"ReadVSMulX", 0>; -defm "" : LMULReadAdvance<"ReadVSShiftV", 0>; -defm "" : LMULReadAdvance<"ReadVSShiftX", 0>; -defm "" : LMULReadAdvanceW<"ReadVNClipV", 0>; -defm "" : LMULReadAdvanceW<"ReadVNClipX", 0>; - -// 14. Vector Floating-Point Instructions -defm "" : LMULReadAdvance<"ReadVFALUV", 0>; -defm "" : LMULReadAdvance<"ReadVFALUF", 0>; -defm "" : LMULReadAdvanceFW<"ReadVFWALUV", 0>; -defm "" : LMULReadAdvanceFW<"ReadVFWALUF", 0>; -defm "" : LMULReadAdvance<"ReadVFMulV", 0>; -defm "" : LMULReadAdvance<"ReadVFMulF", 0>; -defm "" : LMULSEWReadAdvanceF<"ReadVFDivV", 0>; -defm "" : LMULSEWReadAdvanceF<"ReadVFDivF", 0>; -defm "" : LMULReadAdvanceFW<"ReadVFWMulV", 0>; -defm "" : LMULReadAdvanceFW<"ReadVFWMulF", 0>; -defm "" : LMULReadAdvance<"ReadVFMulAddV", 0>; -defm "" : LMULReadAdvance<"ReadVFMulAddF", 0>; -defm "" : LMULReadAdvanceFW<"ReadVFWMulAddV", 0>; -defm "" : LMULReadAdvanceFW<"ReadVFWMulAddF", 0>; -defm "" : LMULSEWReadAdvanceF<"ReadVFSqrtV", 0>; -defm "" : LMULReadAdvance<"ReadVFRecpV", 0>; -defm "" : LMULReadAdvance<"ReadVFCmpV", 0>; -defm "" : LMULReadAdvance<"ReadVFCmpF", 0>; -defm "" : LMULReadAdvance<"ReadVFSgnjV", 0>; -defm "" : LMULReadAdvance<"ReadVFSgnjF", 0>; -defm "" : LMULReadAdvance<"ReadVFClassV", 0>; -defm "" : LMULReadAdvance<"ReadVFMergeV", 0>; -defm "" : LMULReadAdvance<"ReadVFMergeF", 0>; -defm "" : LMULReadAdvance<"ReadVFMovF", 0>; -defm "" : LMULReadAdvance<"ReadVFCvtIToFV", 0>; -defm "" : LMULReadAdvance<"ReadVFCvtFToIV", 0>; -defm "" : LMULReadAdvanceW<"ReadVFWCvtIToFV", 0>; -defm "" : LMULReadAdvanceFW<"ReadVFWCvtFToIV", 0>; -defm "" : LMULReadAdvanceFW<"ReadVFWCvtFToFV", 0>; -defm "" : LMULReadAdvanceFW<"ReadVFNCvtIToFV", 0>; -defm "" : LMULReadAdvanceW<"ReadVFNCvtFToIV", 0>; -defm "" : LMULReadAdvanceFW<"ReadVFNCvtFToFV", 0>; - -// 15. Vector Reduction Operations -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; - -// 16. Vector Mask Instructions -defm "" : LMULReadAdvance<"ReadVMALUV", 0>; -defm "" : LMULReadAdvance<"ReadVMPopV", 0>; -defm "" : LMULReadAdvance<"ReadVMFFSV", 0>; -defm "" : LMULReadAdvance<"ReadVMSFSV", 0>; -defm "" : LMULReadAdvance<"ReadVMIotV", 0>; - -// 17. Vector Permutation Instructions -defm "" : LMULReadAdvance<"ReadVIMovVX", 0>; -defm "" : LMULReadAdvance<"ReadVIMovXV", 0>; -defm "" : LMULReadAdvance<"ReadVIMovXX", 0>; -defm "" : LMULReadAdvance<"ReadVFMovVF", 0>; -defm "" : LMULReadAdvance<"ReadVFMovFV", 0>; -defm "" : LMULReadAdvance<"ReadVFMovFX", 0>; -defm "" : LMULReadAdvance<"ReadVISlideV", 0>; -defm "" : LMULReadAdvance<"ReadVISlideX", 0>; -defm "" : LMULReadAdvance<"ReadVFSlideV", 0>; -defm "" : LMULReadAdvance<"ReadVFSlideF", 0>; -defm "" : LMULSEWReadAdvance<"ReadVRGatherVV_data", 0>; -defm "" : LMULSEWReadAdvance<"ReadVRGatherVV_index", 0>; -defm "" : LMULReadAdvance<"ReadVRGatherVX_data", 0>; -defm "" : LMULReadAdvance<"ReadVRGatherVX_index", 0>; -defm "" : LMULReadAdvance<"ReadVRGatherVI_data", 0>; -defm "" : LMULSEWReadAdvance<"ReadVCompressV", 0>; -// LMUL Aware -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; - -// Others -def : ReadAdvance; - -// Bitmanip -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; - //===----------------------------------------------------------------------===// // Unsupported extensions defm : UnsupportedSchedV; +defm : UnsupportedSchedZba; +defm : UnsupportedSchedZbb; defm : UnsupportedSchedZbc; defm : UnsupportedSchedZbs; defm : UnsupportedSchedZbkb;