diff options
-rwxr-xr-x | llvm/lib/Target/X86/X86SchedBroadwell.td | 6 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86SchedSandyBridge.td | 18 | ||||
-rwxr-xr-x | llvm/lib/Target/X86/X86SchedSkylakeServer.td | 22 | ||||
-rwxr-xr-x | llvm/test/CodeGen/X86/avx512-schedule.ll | 10 |
4 files changed, 13 insertions, 43 deletions
diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td index 3903095ae67..4f2655dbe40 100755 --- a/llvm/lib/Target/X86/X86SchedBroadwell.td +++ b/llvm/lib/Target/X86/X86SchedBroadwell.td @@ -1695,11 +1695,7 @@ def: InstRW<[BWWriteResGroup115], (instregex "MMX_PMADDUBSWrm", "(V?)PHMINPOSUWrm", "(V?)PMADDUBSWrm", "(V?)PMADDWDrm", - "(V?)PSADBWrm", - "(V?)RCPPSm", - "(V?)RCPSSm", - "(V?)RSQRTPSm", - "(V?)RSQRTSSm")>; + "(V?)PSADBWrm")>; def BWWriteResGroup116 : SchedWriteRes<[BWPort01,BWPort23]> { let Latency = 10; diff --git a/llvm/lib/Target/X86/X86SchedSandyBridge.td b/llvm/lib/Target/X86/X86SchedSandyBridge.td index 38990797795..c4dd583d409 100644 --- a/llvm/lib/Target/X86/X86SchedSandyBridge.td +++ b/llvm/lib/Target/X86/X86SchedSandyBridge.td @@ -141,10 +141,10 @@ def : WriteRes<WriteFMove, [SBPort5]>; defm : SBWriteResPair<WriteFAdd, [SBPort1], 3>; defm : SBWriteResPair<WriteFCmp, [SBPort1], 3, [1], 1, 6>; defm : SBWriteResPair<WriteFCom, [SBPort1], 3>; -defm : SBWriteResPair<WriteFMul, [SBPort0], 5>; +defm : SBWriteResPair<WriteFMul, [SBPort0], 5, [1], 1, 6>; defm : SBWriteResPair<WriteFDiv, [SBPort0], 24>; -defm : SBWriteResPair<WriteFRcp, [SBPort0], 5>; -defm : SBWriteResPair<WriteFRsqrt, [SBPort0], 5>; +defm : SBWriteResPair<WriteFRcp, [SBPort0], 5, [1], 1, 6>; +defm : SBWriteResPair<WriteFRsqrt, [SBPort0], 5, [1], 1, 6>; defm : SBWriteResPair<WriteFSqrt, [SBPort0], 14>; defm : SBWriteResPair<WriteCvtF2I, [SBPort1], 3>; defm : SBWriteResPair<WriteCvtI2F, [SBPort1], 4>; @@ -1561,16 +1561,8 @@ def SBWriteResGroup104 : SchedWriteRes<[SBPort0,SBPort23]> { let NumMicroOps = 2; let ResourceCycles = [1,1]; } -def: InstRW<[SBWriteResGroup104], (instregex "(V?)MULPDrm", - "(V?)MULPSrm", - "(V?)MULSDrm", - "(V?)MULSSrm", - "(V?)PCMPGTQrm", - "(V?)PHMINPOSUWrm", - "(V?)RCPPSm", - "(V?)RCPSSm", - "(V?)RSQRTPSm", - "(V?)RSQRTSSm")>; +def: InstRW<[SBWriteResGroup104], (instregex "(V?)PCMPGTQrm", + "(V?)PHMINPOSUWrm")>; def SBWriteResGroup106 : SchedWriteRes<[SBPort1,SBPort23]> { let Latency = 11; diff --git a/llvm/lib/Target/X86/X86SchedSkylakeServer.td b/llvm/lib/Target/X86/X86SchedSkylakeServer.td index 40b24c7a72c..561e4ebea99 100755 --- a/llvm/lib/Target/X86/X86SchedSkylakeServer.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeServer.td @@ -157,8 +157,8 @@ defm : SKXWriteResPair<WriteFCom, [SKXPort0], 2>; // Floating point compare to defm : SKXWriteResPair<WriteFMul, [SKXPort0], 5>; // Floating point multiplication. defm : SKXWriteResPair<WriteFDiv, [SKXPort0], 12>; // 10-14 cycles. // Floating point division. defm : SKXWriteResPair<WriteFSqrt, [SKXPort0], 15>; // Floating point square root. -defm : SKXWriteResPair<WriteFRcp, [SKXPort0], 4>; // Floating point reciprocal estimate. -defm : SKXWriteResPair<WriteFRsqrt, [SKXPort0], 4>; // Floating point reciprocal square root estimate. +defm : SKXWriteResPair<WriteFRcp, [SKXPort0], 4, [1], 1, 6>; // Floating point reciprocal estimate. +defm : SKXWriteResPair<WriteFRsqrt, [SKXPort0], 4, [1], 1, 6>; // Floating point reciprocal square root estimate. defm : SKXWriteResPair<WriteFMA, [SKXPort015], 4>; // Fused Multiply Add. defm : SKXWriteResPair<WriteFSign, [SKXPort0], 1>; // Floating point fabs/fchs. defm : SKXWriteResPair<WriteFLogic, [SKXPort015], 1, [1], 1, 6>; // Floating point and/or/xor logicals. @@ -3820,24 +3820,6 @@ def SKXWriteResGroup146 : SchedWriteRes<[SKXPort1,SKXPort6,SKXPort23,SKXPort0156 def: InstRW<[SKXWriteResGroup146], (instregex "LAR(16|32|64)rm", "LSL(16|32|64)rm")>; -def SKXWriteResGroup147 : SchedWriteRes<[SKXPort0,SKXPort23]> { - let Latency = 10; - let NumMicroOps = 2; - let ResourceCycles = [1,1]; -} -def: InstRW<[SKXWriteResGroup147], (instregex "RCPPSm", - "RSQRTPSm", - "VRCP14PDZ128m(b?)", - "VRCP14PSZ128m(b?)", - "VRCP14SDrm(b?)", - "VRCP14SSrm(b?)", - "VRCPPSm", - "VRSQRT14PDZ128m(b?)", - "VRSQRT14PSZ128m(b?)", - "VRSQRT14SDrm(b?)", - "VRSQRT14SSrm(b?)", - "VRSQRTPSm")>; - def SKXWriteResGroup148 : SchedWriteRes<[SKXPort5,SKXPort23]> { let Latency = 10; let NumMicroOps = 2; diff --git a/llvm/test/CodeGen/X86/avx512-schedule.ll b/llvm/test/CodeGen/X86/avx512-schedule.ll index cd353085781..85028dfb82f 100755 --- a/llvm/test/CodeGen/X86/avx512-schedule.ll +++ b/llvm/test/CodeGen/X86/avx512-schedule.ll @@ -186,7 +186,7 @@ entry: define <8 x double> @mulpd512fold(<8 x double> %y) { ; GENERIC-LABEL: mulpd512fold: ; GENERIC: # %bb.0: # %entry -; GENERIC-NEXT: vmulpd {{.*}}(%rip), %zmm0, %zmm0 # sched: [10:1.00] +; GENERIC-NEXT: vmulpd {{.*}}(%rip), %zmm0, %zmm0 # sched: [11:1.00] ; GENERIC-NEXT: retq # sched: [1:1.00] ; ; SKX-LABEL: mulpd512fold: @@ -216,7 +216,7 @@ entry: define <16 x float> @mulps512fold(<16 x float> %y) { ; GENERIC-LABEL: mulps512fold: ; GENERIC: # %bb.0: # %entry -; GENERIC-NEXT: vmulps {{.*}}(%rip), %zmm0, %zmm0 # sched: [10:1.00] +; GENERIC-NEXT: vmulps {{.*}}(%rip), %zmm0, %zmm0 # sched: [11:1.00] ; GENERIC-NEXT: retq # sched: [1:1.00] ; ; SKX-LABEL: mulps512fold: @@ -4918,7 +4918,7 @@ define double @test_x86_fmsub_231_m(double %a0, double %a1, double * %a2_ptr) { define <16 x float> @test231_br(<16 x float> %a1, <16 x float> %a2) nounwind { ; GENERIC-LABEL: test231_br: ; GENERIC: # %bb.0: -; GENERIC-NEXT: vmulps {{.*}}(%rip){1to16}, %zmm0, %zmm0 # sched: [10:1.00] +; GENERIC-NEXT: vmulps {{.*}}(%rip){1to16}, %zmm0, %zmm0 # sched: [11:1.00] ; GENERIC-NEXT: vaddps %zmm1, %zmm0, %zmm0 # sched: [3:1.00] ; GENERIC-NEXT: retq # sched: [1:1.00] ; @@ -4955,7 +4955,7 @@ define <16 x float> @test_x86_fmadd132_ps(<16 x float> %a0, <16 x float> %a1, <1 ; GENERIC: # %bb.0: ; GENERIC-NEXT: vpsllw $7, %xmm2, %xmm2 # sched: [1:1.00] ; GENERIC-NEXT: vpmovb2m %xmm2, %k1 # sched: [1:0.33] -; GENERIC-NEXT: vmulps (%rdi), %zmm0, %zmm2 # sched: [10:1.00] +; GENERIC-NEXT: vmulps (%rdi), %zmm0, %zmm2 # sched: [11:1.00] ; GENERIC-NEXT: vaddps %zmm1, %zmm2, %zmm0 {%k1} # sched: [3:1.00] ; GENERIC-NEXT: retq # sched: [1:1.00] ; @@ -4979,7 +4979,7 @@ define <16 x float> @test_x86_fmadd231_ps(<16 x float> %a0, <16 x float> %a1, <1 ; GENERIC: # %bb.0: ; GENERIC-NEXT: vpsllw $7, %xmm2, %xmm2 # sched: [1:1.00] ; GENERIC-NEXT: vpmovb2m %xmm2, %k1 # sched: [1:0.33] -; GENERIC-NEXT: vmulps (%rdi), %zmm0, %zmm0 # sched: [10:1.00] +; GENERIC-NEXT: vmulps (%rdi), %zmm0, %zmm0 # sched: [11:1.00] ; GENERIC-NEXT: vaddps %zmm1, %zmm0, %zmm1 {%k1} # sched: [3:1.00] ; GENERIC-NEXT: vmovaps %zmm1, %zmm0 # sched: [1:1.00] ; GENERIC-NEXT: retq # sched: [1:1.00] |