This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGf9fa8a599704: [RISCV] Add scheduling information for Zba and Zbb to RISCVSchedSiFive7.td (authored by michaelmaitland).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D149497/new/ https://reviews.llvm.org/D149497 Files: llvm/lib/Target/RISCV/RISCVSchedSiFive7.td Index: llvm/lib/Target/RISCV/RISCVSchedSiFive7.td =================================================================== --- llvm/lib/Target/RISCV/RISCVSchedSiFive7.td +++ llvm/lib/Target/RISCV/RISCVSchedSiFive7.td @@ -76,6 +76,35 @@ let ResourceCycles = [1, 15]; } +// Bitmanip +let Latency = 3 in { +// Rotates are in the late-B ALU. +def : WriteRes<WriteRotateImm, [SiFive7PipeB]>; +def : WriteRes<WriteRotateImm32, [SiFive7PipeB]>; +def : WriteRes<WriteRotateReg, [SiFive7PipeB]>; +def : WriteRes<WriteRotateReg32, [SiFive7PipeB]>; + +// clz[w]/ctz[w] are in the late-B ALU. +def : WriteRes<WriteCLZ, [SiFive7PipeB]>; +def : WriteRes<WriteCLZ32, [SiFive7PipeB]>; +def : WriteRes<WriteCTZ, [SiFive7PipeB]>; +def : WriteRes<WriteCTZ32, [SiFive7PipeB]>; + +// cpop[w] look exactly like multiply. +def : WriteRes<WriteCPOP, [SiFive7PipeB]>; +def : WriteRes<WriteCPOP32, [SiFive7PipeB]>; + +// orc.b is in the late-B ALU. +def : WriteRes<WriteORCB, [SiFive7PipeB]>; + +// rev8 is in the late-A and late-B ALUs. +def : WriteRes<WriteREV8, [SiFive7PipeAB]>; + +// shNadd[.uw] is on the early-B and late-B ALUs. +def : WriteRes<WriteSHXADD, [SiFive7PipeB]>; +def : WriteRes<WriteSHXADD32, [SiFive7PipeB]>; +} + // Memory def : WriteRes<WriteSTB, [SiFive7PipeA]>; def : WriteRes<WriteSTH, [SiFive7PipeA]>; @@ -279,11 +308,25 @@ def : ReadAdvance<ReadSFB, 0>; +// Bitmanip +def : ReadAdvance<ReadRotateImm, 0>; +def : ReadAdvance<ReadRotateImm32, 0>; +def : ReadAdvance<ReadRotateReg, 0>; +def : ReadAdvance<ReadRotateReg32, 0>; +def : ReadAdvance<ReadCLZ, 0>; +def : ReadAdvance<ReadCLZ32, 0>; +def : ReadAdvance<ReadCTZ, 0>; +def : ReadAdvance<ReadCTZ32, 0>; +def : ReadAdvance<ReadCPOP, 0>; +def : ReadAdvance<ReadCPOP32, 0>; +def : ReadAdvance<ReadORCB, 0>; +def : ReadAdvance<ReadREV8, 0>; +def : ReadAdvance<ReadSHXADD, 0>; +def : ReadAdvance<ReadSHXADD32, 0>; + //===----------------------------------------------------------------------===// // Unsupported extensions defm : UnsupportedSchedV; -defm : UnsupportedSchedZba; -defm : UnsupportedSchedZbb; defm : UnsupportedSchedZbc; defm : UnsupportedSchedZbs; defm : UnsupportedSchedZbkb;
Index: llvm/lib/Target/RISCV/RISCVSchedSiFive7.td =================================================================== --- llvm/lib/Target/RISCV/RISCVSchedSiFive7.td +++ llvm/lib/Target/RISCV/RISCVSchedSiFive7.td @@ -76,6 +76,35 @@ let ResourceCycles = [1, 15]; } +// Bitmanip +let Latency = 3 in { +// Rotates are in the late-B ALU. +def : WriteRes<WriteRotateImm, [SiFive7PipeB]>; +def : WriteRes<WriteRotateImm32, [SiFive7PipeB]>; +def : WriteRes<WriteRotateReg, [SiFive7PipeB]>; +def : WriteRes<WriteRotateReg32, [SiFive7PipeB]>; + +// clz[w]/ctz[w] are in the late-B ALU. +def : WriteRes<WriteCLZ, [SiFive7PipeB]>; +def : WriteRes<WriteCLZ32, [SiFive7PipeB]>; +def : WriteRes<WriteCTZ, [SiFive7PipeB]>; +def : WriteRes<WriteCTZ32, [SiFive7PipeB]>; + +// cpop[w] look exactly like multiply. +def : WriteRes<WriteCPOP, [SiFive7PipeB]>; +def : WriteRes<WriteCPOP32, [SiFive7PipeB]>; + +// orc.b is in the late-B ALU. +def : WriteRes<WriteORCB, [SiFive7PipeB]>; + +// rev8 is in the late-A and late-B ALUs. +def : WriteRes<WriteREV8, [SiFive7PipeAB]>; + +// shNadd[.uw] is on the early-B and late-B ALUs. +def : WriteRes<WriteSHXADD, [SiFive7PipeB]>; +def : WriteRes<WriteSHXADD32, [SiFive7PipeB]>; +} + // Memory def : WriteRes<WriteSTB, [SiFive7PipeA]>; def : WriteRes<WriteSTH, [SiFive7PipeA]>; @@ -279,11 +308,25 @@ def : ReadAdvance<ReadSFB, 0>; +// Bitmanip +def : ReadAdvance<ReadRotateImm, 0>; +def : ReadAdvance<ReadRotateImm32, 0>; +def : ReadAdvance<ReadRotateReg, 0>; +def : ReadAdvance<ReadRotateReg32, 0>; +def : ReadAdvance<ReadCLZ, 0>; +def : ReadAdvance<ReadCLZ32, 0>; +def : ReadAdvance<ReadCTZ, 0>; +def : ReadAdvance<ReadCTZ32, 0>; +def : ReadAdvance<ReadCPOP, 0>; +def : ReadAdvance<ReadCPOP32, 0>; +def : ReadAdvance<ReadORCB, 0>; +def : ReadAdvance<ReadREV8, 0>; +def : ReadAdvance<ReadSHXADD, 0>; +def : ReadAdvance<ReadSHXADD32, 0>; + //===----------------------------------------------------------------------===// // Unsupported extensions defm : UnsupportedSchedV; -defm : UnsupportedSchedZba; -defm : UnsupportedSchedZbb; defm : UnsupportedSchedZbc; defm : UnsupportedSchedZbs; defm : UnsupportedSchedZbkb;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits