diff --git a/llvm/lib/Target/X86/X86ScheduleZnver3.td b/llvm/lib/Target/X86/X86ScheduleZnver3.td index e7412f833a647a..fb40c4cfd62b1e 100644 --- a/llvm/lib/Target/X86/X86ScheduleZnver3.td +++ b/llvm/lib/Target/X86/X86ScheduleZnver3.td @@ -1347,17 +1347,10 @@ def Zn3WriteVPERM2F128rm : SchedWriteRes<[Zn3AGU012, Zn3Load, Zn3FPVShuf]> { } def : InstRW<[Zn3WriteVPERM2F128rm], (instrs VPERM2F128rm)>; -def Zn3WriteVPERMPSYrr : SchedWriteRes<[Zn3FPVShuf]> { - let Latency = 7; - let ResourceCycles = [1]; - let NumMicroOps = 2; -} -def : InstRW<[Zn3WriteVPERMPSYrr], (instrs VPERMPSYrr)>; - def Zn3WriteVPERMPSYrm : SchedWriteRes<[Zn3AGU012, Zn3Load, Zn3FPVShuf]> { - let Latency = !add(Znver3Model.LoadLatency, Zn3WriteVPERMPSYrr.Latency); + let Latency = !add(Znver3Model.LoadLatency, 7); let ResourceCycles = [1, 1, 2]; - let NumMicroOps = !add(Zn3WriteVPERMPSYrr.NumMicroOps, 1); + let NumMicroOps = 3; } def : InstRW<[Zn3WriteVPERMPSYrm], (instrs VPERMPSYrm)>; @@ -1375,22 +1368,15 @@ def Zn3WriteVPERMPDYmi : SchedWriteRes<[Zn3AGU012, Zn3Load, Zn3FPVShuf]> { } def : InstRW<[Zn3WriteVPERMPDYmi], (instrs VPERMPDYmi)>; -def Zn3WriteVPERMDYrr : SchedWriteRes<[Zn3FPVShuf]> { - let Latency = 5; - let ResourceCycles = [1]; - let NumMicroOps = 2; -} -def : InstRW<[Zn3WriteVPERMDYrr], (instrs VPERMDYrr)>; - -def Zn3WriteVPERMYm : SchedWriteRes<[Zn3AGU012, Zn3Load, Zn3FPVShuf]> { - let Latency = !add(Znver3Model.LoadLatency, Zn3WriteVPERMDYrr.Latency); +def Zn3WriteVPERMDYm : SchedWriteRes<[Zn3AGU012, Zn3Load, Zn3FPVShuf]> { + let Latency = !add(Znver3Model.LoadLatency, 5); let ResourceCycles = [1, 1, 2]; - let NumMicroOps = !add(Zn3WriteVPERMDYrr.NumMicroOps, 0); + let NumMicroOps = 2; } -def : InstRW<[Zn3WriteVPERMYm], (instrs VPERMQYmi, VPERMDYrm)>; +def : InstRW<[Zn3WriteVPERMDYm], (instrs VPERMQYmi, VPERMDYrm)>; defm : Zn3WriteResYMMPair; // 256-bit width packed vector width-changing move. -defm : Zn3WriteResYMMPair; // 256-bit width vector variable shuffles. +defm : Zn3WriteResYMMPair; // 256-bit width vector variable shuffles. defm : Zn3WriteResXMMPair; // Variable vector shifts. defm : Zn3WriteResYMMPair; // Variable vector shifts (YMM). defm : X86WriteResPairUnsupported; // Variable vector shifts (ZMM).