diff --git a/llvm/lib/Target/RISCV/RISCVSchedRocket.td b/llvm/lib/Target/RISCV/RISCVSchedRocket.td index 9ddc4281092dd..1148581415380 100644 --- a/llvm/lib/Target/RISCV/RISCVSchedRocket.td +++ b/llvm/lib/Target/RISCV/RISCVSchedRocket.td @@ -259,7 +259,7 @@ defm : UnsupportedSchedZbs; defm : UnsupportedSchedZbkb; defm : UnsupportedSchedZbkx; defm : UnsupportedSchedZfa; -defm : UnsupportedSchedZfh; +defm : UnsupportedSchedZfhmin; defm : UnsupportedSchedSFB; defm : UnsupportedSchedXsfvcp; defm : UnsupportedSchedZvk; diff --git a/llvm/lib/Target/RISCV/RISCVSchedSyntacoreSCR345.td b/llvm/lib/Target/RISCV/RISCVSchedSyntacoreSCR345.td index a1c63f22e5c09..e509abc9f922e 100644 --- a/llvm/lib/Target/RISCV/RISCVSchedSyntacoreSCR345.td +++ b/llvm/lib/Target/RISCV/RISCVSchedSyntacoreSCR345.td @@ -179,27 +179,27 @@ multiclass SCR_Other { } // Unsupported scheduling classes for SCR3-5. -multiclass SCR_Unsupported { - defm : UnsupportedSchedSFB; - defm : UnsupportedSchedV; - defm : UnsupportedSchedXsfvcp; - defm : UnsupportedSchedZabha; - defm : UnsupportedSchedZba; - defm : UnsupportedSchedZbb; - defm : UnsupportedSchedZbc; - defm : UnsupportedSchedZbs; - defm : UnsupportedSchedZbkb; - defm : UnsupportedSchedZbkx; - defm : UnsupportedSchedZfa; - defm : UnsupportedSchedZfh; - defm : UnsupportedSchedZvk; -} - -multiclass SCR3_Unsupported { - defm : SCR_Unsupported; - defm : UnsupportedSchedD; - defm : UnsupportedSchedF; -} +multiclass SCR_Unsupported : + UnsupportedSchedSFB, + UnsupportedSchedV, + UnsupportedSchedXsfvcp, + UnsupportedSchedZabha, + UnsupportedSchedZba, + UnsupportedSchedZbb, + UnsupportedSchedZbc, + UnsupportedSchedZbs, + UnsupportedSchedZbkb, + UnsupportedSchedZbkx, + UnsupportedSchedZfa, + UnsupportedSchedZvk; + +multiclass SCR3_Unsupported : + SCR_Unsupported, + UnsupportedSchedF; + +multiclass SCR4_SCR5_Unsupported : + SCR_Unsupported, + UnsupportedSchedZfhmin; // Bypasses (none) multiclass SCR_NoReadAdvances { @@ -231,8 +231,7 @@ multiclass SCR_NoReadAdvances { } // Floating-point bypasses (none) -multiclass SCR4_SCR5_NoReadAdvances { - defm : SCR_NoReadAdvances; +multiclass SCR4_SCR5_NoReadAdvances : SCR_NoReadAdvances { def : ReadAdvance; def : ReadAdvance; def : ReadAdvance; @@ -353,7 +352,7 @@ let SchedModel = SyntacoreSCR4RV32Model in { defm : SCR_FDU; defm : SCR_Other; - defm : SCR_Unsupported; + defm : SCR4_SCR5_Unsupported; defm : SCR4_SCR5_NoReadAdvances; } @@ -383,7 +382,7 @@ let SchedModel = SyntacoreSCR4RV64Model in { defm : SCR_FDU; defm : SCR_Other; - defm : SCR_Unsupported; + defm : SCR4_SCR5_Unsupported; defm : SCR4_SCR5_NoReadAdvances; } @@ -416,7 +415,7 @@ let SchedModel = SyntacoreSCR5RV32Model in { defm : SCR_FDU; defm : SCR_Other; - defm : SCR_Unsupported; + defm : SCR4_SCR5_Unsupported; defm : SCR4_SCR5_NoReadAdvances; } @@ -446,6 +445,6 @@ let SchedModel = SyntacoreSCR5RV64Model in { defm : SCR_FDU; defm : SCR_Other; - defm : SCR_Unsupported; + defm : SCR4_SCR5_Unsupported; defm : SCR4_SCR5_NoReadAdvances; } diff --git a/llvm/lib/Target/RISCV/RISCVSchedSyntacoreSCR7.td b/llvm/lib/Target/RISCV/RISCVSchedSyntacoreSCR7.td index 2818c2f60f3f9..4631474a945cb 100644 --- a/llvm/lib/Target/RISCV/RISCVSchedSyntacoreSCR7.td +++ b/llvm/lib/Target/RISCV/RISCVSchedSyntacoreSCR7.td @@ -246,7 +246,7 @@ multiclass SCR7_Unsupported { defm : UnsupportedSchedXsfvcp; defm : UnsupportedSchedZabha; defm : UnsupportedSchedZfa; - defm : UnsupportedSchedZfh; + defm : UnsupportedSchedZfhmin; defm : UnsupportedSchedZvk; } diff --git a/llvm/lib/Target/RISCV/RISCVSchedXiangShanNanHu.td b/llvm/lib/Target/RISCV/RISCVSchedXiangShanNanHu.td index dcd1a938a9147..16d192feafd29 100644 --- a/llvm/lib/Target/RISCV/RISCVSchedXiangShanNanHu.td +++ b/llvm/lib/Target/RISCV/RISCVSchedXiangShanNanHu.td @@ -308,7 +308,7 @@ def : ReadAdvance; // Unsupported extensions defm : UnsupportedSchedV; defm : UnsupportedSchedZfa; -defm : UnsupportedSchedZfh; +defm : UnsupportedSchedZfhmin; defm : UnsupportedSchedSFB; defm : UnsupportedSchedZabha; defm : UnsupportedSchedXsfvcp; diff --git a/llvm/lib/Target/RISCV/RISCVSchedule.td b/llvm/lib/Target/RISCV/RISCVSchedule.td index 1fdbc7cbcbaf4..7946a746efd02 100644 --- a/llvm/lib/Target/RISCV/RISCVSchedule.td +++ b/llvm/lib/Target/RISCV/RISCVSchedule.td @@ -211,90 +211,57 @@ def ReadFClass16 : SchedRead; def ReadFClass32 : SchedRead; def ReadFClass64 : SchedRead; +// For CPUs that support Zfhmin, but not Zfh. multiclass UnsupportedSchedZfh { let Unsupported = true in { def : WriteRes; def : WriteRes; -def : WriteRes; -def : WriteRes; def : WriteRes; -def : WriteRes; def : WriteRes; def : WriteRes; -def : WriteRes; def : WriteRes; def : WriteRes; def : WriteRes; -def : WriteRes; def : WriteRes; def : WriteRes; def : WriteRes; -def : WriteRes; -def : WriteRes; def : WriteRes; -def : WriteRes; def : WriteRes; 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; def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; def : ReadAdvance; def : ReadAdvance; } // Unsupported = true } -multiclass UnsupportedSchedF { +// For CPUs that support neither Zfhmin or Zfh. +multiclass UnsupportedSchedZfhmin : UnsupportedSchedZfh { let Unsupported = true in { -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; -def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; -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; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; -def : ReadAdvance; +def : ReadAdvance; +def : ReadAdvance; +def : ReadAdvance; +def : ReadAdvance; +def : ReadAdvance; +def : ReadAdvance; } // Unsupported = true } @@ -341,6 +308,48 @@ def : ReadAdvance; } // Unsupported = true } +// For CPUs with no floating point. +multiclass UnsupportedSchedF : UnsupportedSchedD, UnsupportedSchedZfhmin { +let Unsupported = true in { +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; +def : WriteRes; + +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; +def : ReadAdvance; +def : ReadAdvance; +def : ReadAdvance; +def : ReadAdvance; +} // Unsupported = true +} + multiclass UnsupportedSchedSFB { let Unsupported = true in { def : WriteRes;