diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoD.td b/llvm/lib/Target/RISCV/RISCVInstrInfoD.td --- a/llvm/lib/Target/RISCV/RISCVInstrInfoD.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoD.td @@ -82,16 +82,16 @@ Sched<[WriteFST64, ReadStoreData, ReadFMemBase]>; def FMADD_D : FPFMAD_rrr_frm, - Sched<[WriteFMulAdd64, ReadFMulAdd64, ReadFMulAdd64, ReadFMulAdd64]>; + Sched<[WriteFMA64, ReadFMA64, ReadFMA64, ReadFMA64]>; def : FPFMADDynFrmAlias; def FMSUB_D : FPFMAD_rrr_frm, - Sched<[WriteFMulSub64, ReadFMulSub64, ReadFMulSub64, ReadFMulSub64]>; + Sched<[WriteFMA64, ReadFMA64, ReadFMA64, ReadFMA64]>; def : FPFMADDynFrmAlias; def FNMSUB_D : FPFMAD_rrr_frm, - Sched<[WriteFMulSub64, ReadFMulSub64, ReadFMulSub64, ReadFMulSub64]>; + Sched<[WriteFMA64, ReadFMA64, ReadFMA64, ReadFMA64]>; def : FPFMADDynFrmAlias; def FNMADD_D : FPFMAD_rrr_frm, - Sched<[WriteFMulAdd64, ReadFMulAdd64, ReadFMulAdd64, ReadFMulAdd64]>; + Sched<[WriteFMA64, ReadFMA64, ReadFMA64, ReadFMA64]>; def : FPFMADDynFrmAlias; def FADD_D : FPALUD_rr_frm<0b0000001, "fadd.d">, diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoF.td b/llvm/lib/Target/RISCV/RISCVInstrInfoF.td --- a/llvm/lib/Target/RISCV/RISCVInstrInfoF.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoF.td @@ -117,16 +117,16 @@ Sched<[WriteFST32, ReadStoreData, ReadFMemBase]>; def FMADD_S : FPFMAS_rrr_frm, - Sched<[WriteFMulAdd32, ReadFMulAdd32, ReadFMulAdd32, ReadFMulAdd32]>; + Sched<[WriteFMA32, ReadFMA32, ReadFMA32, ReadFMA32]>; def : FPFMASDynFrmAlias; def FMSUB_S : FPFMAS_rrr_frm, - Sched<[WriteFMulSub32, ReadFMulSub32, ReadFMulSub32, ReadFMulSub32]>; + Sched<[WriteFMA32, ReadFMA32, ReadFMA32, ReadFMA32]>; def : FPFMASDynFrmAlias; def FNMSUB_S : FPFMAS_rrr_frm, - Sched<[WriteFMulSub32, ReadFMulSub32, ReadFMulSub32, ReadFMulSub32]>; + Sched<[WriteFMA32, ReadFMA32, ReadFMA32, ReadFMA32]>; def : FPFMASDynFrmAlias; def FNMADD_S : FPFMAS_rrr_frm, - Sched<[WriteFMulAdd32, ReadFMulAdd32, ReadFMulAdd32, ReadFMulAdd32]>; + Sched<[WriteFMA32, ReadFMA32, ReadFMA32, ReadFMA32]>; def : FPFMASDynFrmAlias; def FADD_S : FPALUS_rr_frm<0b0000000, "fadd.s">, diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoZfh.td b/llvm/lib/Target/RISCV/RISCVInstrInfoZfh.td --- a/llvm/lib/Target/RISCV/RISCVInstrInfoZfh.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoZfh.td @@ -83,16 +83,16 @@ Sched<[WriteFST16, ReadStoreData, ReadFMemBase]>; def FMADD_H : FPFMAH_rrr_frm, - Sched<[WriteFMulAdd16, ReadFMulAdd16, ReadFMulAdd16, ReadFMulAdd16]>; + Sched<[WriteFMA16, ReadFMA16, ReadFMA16, ReadFMA16]>; def : FPFMAHDynFrmAlias; def FMSUB_H : FPFMAH_rrr_frm, - Sched<[WriteFMulSub16, ReadFMulSub16, ReadFMulSub16, ReadFMulSub16]>; + Sched<[WriteFMA16, ReadFMA16, ReadFMA16, ReadFMA16]>; def : FPFMAHDynFrmAlias; def FNMSUB_H : FPFMAH_rrr_frm, - Sched<[WriteFMulSub16, ReadFMulSub16, ReadFMulSub16, ReadFMulSub16]>; + Sched<[WriteFMA16, ReadFMA16, ReadFMA16, ReadFMA16]>; def : FPFMAHDynFrmAlias; def FNMADD_H : FPFMAH_rrr_frm, - Sched<[WriteFMulAdd16, ReadFMulAdd16, ReadFMulAdd16, ReadFMulAdd16]>; + Sched<[WriteFMA16, ReadFMA16, ReadFMA16, ReadFMA16]>; def : FPFMAHDynFrmAlias; def FADD_H : FPALUH_rr_frm<0b0000010, "fadd.h">, diff --git a/llvm/lib/Target/RISCV/RISCVSchedRocket.td b/llvm/lib/Target/RISCV/RISCVSchedRocket.td --- a/llvm/lib/Target/RISCV/RISCVSchedRocket.td +++ b/llvm/lib/Target/RISCV/RISCVSchedRocket.td @@ -145,14 +145,12 @@ // FP multiplication let Latency = 5 in { def : WriteRes; -def : WriteRes; -def : WriteRes; +def : WriteRes; } let Latency = 7 in { def : WriteRes; -def : WriteRes; -def : WriteRes; +def : WriteRes; } // FP division @@ -203,11 +201,9 @@ 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; @@ -250,9 +246,8 @@ def : WriteRes; def : WriteRes; def : WriteRes; -def : WriteRes; +def : WriteRes; def : WriteRes; -def : WriteRes; def : WriteRes; def : WriteRes; def : WriteRes; @@ -272,9 +267,8 @@ def : ReadAdvance; def : ReadAdvance; def : ReadAdvance; -def : ReadAdvance; +def : ReadAdvance; def : ReadAdvance; -def : ReadAdvance; def : ReadAdvance; def : ReadAdvance; def : ReadAdvance; diff --git a/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td b/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td --- a/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td +++ b/llvm/lib/Target/RISCV/RISCVSchedSiFive7.td @@ -103,8 +103,7 @@ let Latency = 5 in { def : WriteRes; def : WriteRes; -def : WriteRes; -def : WriteRes; +def : WriteRes; } let Latency = 3 in { def : WriteRes; @@ -120,8 +119,7 @@ let Latency = 7 in { def : WriteRes; def : WriteRes; -def : WriteRes; -def : WriteRes; +def : WriteRes; } let Latency = 3 in { def : WriteRes; @@ -191,11 +189,9 @@ 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; @@ -238,9 +234,8 @@ def : WriteRes; def : WriteRes; def : WriteRes; -def : WriteRes; +def : WriteRes; def : WriteRes; -def : WriteRes; def : WriteRes; def : WriteRes; def : WriteRes; @@ -260,9 +255,8 @@ def : ReadAdvance; def : ReadAdvance; def : ReadAdvance; -def : ReadAdvance; +def : ReadAdvance; def : ReadAdvance; -def : ReadAdvance; def : ReadAdvance; def : ReadAdvance; def : ReadAdvance; diff --git a/llvm/lib/Target/RISCV/RISCVSchedule.td b/llvm/lib/Target/RISCV/RISCVSchedule.td --- a/llvm/lib/Target/RISCV/RISCVSchedule.td +++ b/llvm/lib/Target/RISCV/RISCVSchedule.td @@ -42,14 +42,11 @@ def WriteFALU32 : SchedWrite; // FP 32-bit computation def WriteFALU64 : SchedWrite; // FP 64-bit computation def WriteFMul16 : SchedWrite; // 16-bit floating point multiply -def WriteFMulAdd16 : SchedWrite; // 16-bit floating point multiply add -def WriteFMulSub16 : SchedWrite; // 16-bit floating point multiply sub +def WriteFMA16 : SchedWrite; // 16-bit floating point fused multiply-add def WriteFMul32 : SchedWrite; // 32-bit floating point multiply -def WriteFMulAdd32 : SchedWrite; // 32-bit floating point multiply add -def WriteFMulSub32 : SchedWrite; // 32-bit floating point multiply sub +def WriteFMA32 : SchedWrite; // 32-bit floating point fused multiply-add def WriteFMul64 : SchedWrite; // 64-bit floating point multiply -def WriteFMulAdd64 : SchedWrite; // 64-bit floating point multiply add -def WriteFMulSub64 : SchedWrite; // 64-bit floating point multiply sub +def WriteFMA64 : SchedWrite; // 64-bit floating point fused multiply-add def WriteFDiv16 : SchedWrite; // 16-bit floating point divide def WriteFDiv32 : SchedWrite; // 32-bit floating point divide def WriteFDiv64 : SchedWrite; // 64-bit floating point divide @@ -155,14 +152,11 @@ def ReadFALU32 : SchedRead; // FP 32-bit computation def ReadFALU64 : SchedRead; // FP 64-bit computation def ReadFMul16 : SchedRead; // 16-bit floating point multiply -def ReadFMulAdd16 : SchedRead; // 16-bit floating point multiply add -def ReadFMulSub16 : SchedRead; // 16-bit floating point multiply sub +def ReadFMA16 : SchedRead; // 16-bit floating point fused multiply-add def ReadFMul32 : SchedRead; // 32-bit floating point multiply -def ReadFMulAdd32 : SchedRead; // 32-bit floating point multiply add -def ReadFMulSub32 : SchedRead; // 32-bit floating point multiply sub +def ReadFMA32 : SchedRead; // 32-bit floating point fused multiply-add def ReadFMul64 : SchedRead; // 64-bit floating point multiply -def ReadFMulAdd64 : SchedRead; // 64-bit floating point multiply add -def ReadFMulSub64 : SchedRead; // 64-bit floating point multiply sub +def ReadFMA64 : SchedRead; // 64-bit floating point fused multiply-add def ReadFDiv16 : SchedRead; // 16-bit floating point divide def ReadFDiv32 : SchedRead; // 32-bit floating point divide def ReadFDiv64 : SchedRead; // 64-bit floating point divide