diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-05-02 14:25:32 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-05-02 14:25:32 +0000 |
| commit | 86d9f23dedf0dca149ea6d15e706f7b0de8b72ed (patch) | |
| tree | 8aa177b953fac6c79153b6bf01a0761467bdd55a /llvm/lib/Target | |
| parent | f53ee8e640891747935aac02889d7350e95966b4 (diff) | |
| download | bcm5719-llvm-86d9f23dedf0dca149ea6d15e706f7b0de8b72ed.tar.gz bcm5719-llvm-86d9f23dedf0dca149ea6d15e706f7b0de8b72ed.zip | |
[X86] Cleanup WriteFMul scheduler classes with more common default values
Intel models were targeting x87 instead of packed sse.
llvm-svn: 331360
Diffstat (limited to 'llvm/lib/Target')
| -rwxr-xr-x | llvm/lib/Target/X86/X86SchedBroadwell.td | 37 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86SchedHaswell.td | 35 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86SchedSkylakeClient.td | 12 |
3 files changed, 14 insertions, 70 deletions
diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td index 0531ef5700b..4941716ba78 100755 --- a/llvm/lib/Target/X86/X86SchedBroadwell.td +++ b/llvm/lib/Target/X86/X86SchedBroadwell.td @@ -160,8 +160,8 @@ defm : BWWriteResPair<WriteFAddY, [BWPort1], 3, [1], 1, 6>; // Floating point defm : BWWriteResPair<WriteFCmp, [BWPort1], 3, [1], 1, 5>; // Floating point compare. defm : BWWriteResPair<WriteFCmpY, [BWPort1], 3, [1], 1, 6>; // Floating point compare (YMM/ZMM). defm : BWWriteResPair<WriteFCom, [BWPort1], 3>; // Floating point compare to flags. -defm : BWWriteResPair<WriteFMul, [BWPort0], 5, [1], 1, 5>; // Floating point multiplication. -defm : BWWriteResPair<WriteFMulY, [BWPort0], 5, [1], 1, 7>; // Floating point multiplication (YMM/ZMM). +defm : BWWriteResPair<WriteFMul, [BWPort01], 3, [1], 1, 5>; // Floating point multiplication. +defm : BWWriteResPair<WriteFMulY, [BWPort01], 3, [1], 1, 6>; // Floating point multiplication (YMM/ZMM). defm : BWWriteResPair<WriteFDiv, [BWPort0], 12, [1], 1, 5>; // 10-14 cycles. // Floating point division. defm : BWWriteResPair<WriteFDivY, [BWPort0], 12, [1], 1, 7>; // 10-14 cycles. // Floating point division (YMM/ZMM). defm : BWWriteResPair<WriteFSqrt, [BWPort0], 15, [1], 1, 5>; // Floating point square root. @@ -657,16 +657,6 @@ def: InstRW<[BWWriteResGroup28], (instregex "VPBROADCASTBrr", "VPMOVZXWDYrr", "VPMOVZXWQYrr")>; -def BWWriteResGroup29 : SchedWriteRes<[BWPort01]> { - let Latency = 3; - let NumMicroOps = 1; - let ResourceCycles = [1]; -} -def: InstRW<[BWWriteResGroup29], (instregex "(V?)MULPD(Y?)rr", - "(V?)MULPS(Y?)rr", - "(V?)MULSDrr", - "(V?)MULSSrr")>; - def BWWriteResGroup30 : SchedWriteRes<[BWPort0156]> { let Latency = 2; let NumMicroOps = 3; @@ -836,7 +826,10 @@ def BWWriteResGroup47 : SchedWriteRes<[BWPort0]> { let NumMicroOps = 1; let ResourceCycles = [1]; } -def: InstRW<[BWWriteResGroup47], (instregex "(V?)PCMPGTQ(Y?)rr")>; +def: InstRW<[BWWriteResGroup47], (instregex "(V?)PCMPGTQ(Y?)rr",
+ "MUL_FPrST0",
+ "MUL_FST0r",
+ "MUL_FrST0")>; def BWWriteResGroup49 : SchedWriteRes<[BWPort23]> { let Latency = 5; @@ -1293,16 +1286,6 @@ def: InstRW<[BWWriteResGroup92], (instregex "VPMOVSXBDYrm", "VPMOVSXWQYrm", "VPMOVZXWDYrm")>; -def BWWriteResGroup93 : SchedWriteRes<[BWPort01,BWPort23]> { - let Latency = 8; - let NumMicroOps = 2; - let ResourceCycles = [1,1]; -} -def: InstRW<[BWWriteResGroup93], (instregex "(V?)MULPDrm", - "(V?)MULPSrm", - "(V?)MULSDrm", - "(V?)MULSSrm")>; - def BWWriteResGroup94 : SchedWriteRes<[BWPort5,BWPort23]> { let Latency = 8; let NumMicroOps = 3; @@ -1389,14 +1372,6 @@ def: InstRW<[BWWriteResGroup102], (instregex "VPERM2F128rm", "VPMOVZXDQYrm", "VPMOVZXWQYrm")>; -def BWWriteResGroup103 : SchedWriteRes<[BWPort01,BWPort23]> { - let Latency = 9; - let NumMicroOps = 2; - let ResourceCycles = [1,1]; -} -def: InstRW<[BWWriteResGroup103], (instregex "VMULPDYrm", - "VMULPSYrm")>; - def BWWriteResGroup104 : SchedWriteRes<[BWPort0,BWPort1,BWPort5]> { let Latency = 9; let NumMicroOps = 3; diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td index 1d68d47a0d1..5a942d8cf9f 100644 --- a/llvm/lib/Target/X86/X86SchedHaswell.td +++ b/llvm/lib/Target/X86/X86SchedHaswell.td @@ -153,8 +153,8 @@ defm : HWWriteResPair<WriteFAddY, [HWPort1], 3, [1], 1, 7>; defm : HWWriteResPair<WriteFCmp, [HWPort1], 3, [1], 1, 6>; defm : HWWriteResPair<WriteFCmpY, [HWPort1], 3, [1], 1, 7>; defm : HWWriteResPair<WriteFCom, [HWPort1], 3>; -defm : HWWriteResPair<WriteFMul, [HWPort0], 5, [1], 1, 5>; -defm : HWWriteResPair<WriteFMulY, [HWPort0], 5, [1], 1, 7>; +defm : HWWriteResPair<WriteFMul, [HWPort01], 5, [1], 1, 6>; +defm : HWWriteResPair<WriteFMulY, [HWPort01], 5, [1], 1, 7>; defm : HWWriteResPair<WriteFDiv, [HWPort0], 12, [1], 1, 5>; // 10-14 cycles. defm : HWWriteResPair<WriteFDivY, [HWPort0], 12, [1], 1, 7>; // 10-14 cycles. defm : HWWriteResPair<WriteFRcp, [HWPort0], 5, [1], 1, 5>; @@ -1797,17 +1797,10 @@ def HWWriteResGroup89 : SchedWriteRes<[HWPort0]> { let NumMicroOps = 1; let ResourceCycles = [1]; } -def: InstRW<[HWWriteResGroup89], (instregex "(V?)PCMPGTQ(Y?)rr")>; - -def HWWriteResGroup90 : SchedWriteRes<[HWPort01]> { - let Latency = 5; - let NumMicroOps = 1; - let ResourceCycles = [1]; -} -def: InstRW<[HWWriteResGroup90], (instregex "(V?)MULPD(Y?)rr", - "(V?)MULPS(Y?)rr", - "(V?)MULSDrr", - "(V?)MULSSrr")>; +def: InstRW<[HWWriteResGroup89], (instregex "(V?)PCMPGTQ(Y?)rr", + "MUL_FPrST0",
+ "MUL_FST0r",
+ "MUL_FrST0")>; def HWWriteResGroup91_1 : SchedWriteRes<[HWPort0,HWPort23,HWFPDivider]> { let Latency = 16; @@ -1858,22 +1851,6 @@ def: InstRW<[HWWriteResGroup91_3], (instregex "MUL_F(32|64)m", "VPMULUDQYrm", "VPSADBWYrm")>; -def HWWriteResGroup92 : SchedWriteRes<[HWPort01,HWPort23]> { - let Latency = 11; - let NumMicroOps = 2; - let ResourceCycles = [1,1]; -} -def: InstRW<[HWWriteResGroup92], (instregex "(V?)MULPDrm", - "(V?)MULPSrm")>; - -def HWWriteResGroup92_1 : SchedWriteRes<[HWPort01,HWPort23]> { - let Latency = 12; - let NumMicroOps = 2; - let ResourceCycles = [1,1]; -} -def: InstRW<[HWWriteResGroup92_1], (instregex "VMULPDYrm", - "VMULPSYrm")>; - def HWWriteResGroup92_2 : SchedWriteRes<[HWPort01,HWPort23]> { let Latency = 10; let NumMicroOps = 2; diff --git a/llvm/lib/Target/X86/X86SchedSkylakeClient.td b/llvm/lib/Target/X86/X86SchedSkylakeClient.td index 601a14ab52f..3128ce6002c 100644 --- a/llvm/lib/Target/X86/X86SchedSkylakeClient.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeClient.td @@ -156,8 +156,8 @@ defm : SKLWriteResPair<WriteFAddY, [SKLPort01], 4, [1], 1, 7>; // Floating poin defm : SKLWriteResPair<WriteFCmp, [SKLPort01], 4, [1], 1, 6>; // Floating point compare. defm : SKLWriteResPair<WriteFCmpY, [SKLPort01], 4, [1], 1, 7>; // Floating point compare (YMM/ZMM). defm : SKLWriteResPair<WriteFCom, [SKLPort0], 2>; // Floating point compare to flags. -defm : SKLWriteResPair<WriteFMul, [SKLPort0], 5, [1], 1, 5>; // Floating point multiplication. -defm : SKLWriteResPair<WriteFMulY, [SKLPort0], 5, [1], 1, 7>; // Floating point multiplication (YMM/ZMM). +defm : SKLWriteResPair<WriteFMul, [SKLPort01], 4, [1], 1, 6>; // Floating point multiplication. +defm : SKLWriteResPair<WriteFMulY, [SKLPort01], 4, [1], 1, 7>; // Floating point multiplication (YMM/ZMM). defm : SKLWriteResPair<WriteFDiv, [SKLPort0], 12, [1], 1, 5>; // 10-14 cycles. // Floating point division. defm : SKLWriteResPair<WriteFDivY, [SKLPort0], 12, [1], 1, 7>; // 10-14 cycles. // Floating point division (YMM/ZMM). defm : SKLWriteResPair<WriteFSqrt, [SKLPort0], 15, [1], 1, 5>; // Floating point square root. @@ -914,10 +914,6 @@ def SKLWriteResGroup48 : SchedWriteRes<[SKLPort01]> { def: InstRW<[SKLWriteResGroup48], (instregex "(V?)CVTDQ2PS(Y?)rr", "(V?)CVTPS2DQ(Y?)rr", "(V?)CVTTPS2DQ(Y?)rr", - "(V?)MULPD(Y?)rr", - "(V?)MULPS(Y?)rr", - "(V?)MULSDrr", - "(V?)MULSSrr", "(V?)PMADDUBSW(Y?)rr", "(V?)PMADDWD(Y?)rr", "(V?)PMULDQ(Y?)rr", @@ -1818,8 +1814,6 @@ def: InstRW<[SKLWriteResGroup134], (instregex "(V?)CVTDQ2PSrm", "(V?)CVTPS2DQrm", "(V?)CVTSS2SDrm", "(V?)CVTTPS2DQrm", - "(V?)MULPDrm", - "(V?)MULPSrm", "(V?)PMADDUBSWrm", "(V?)PMADDWDrm", "(V?)PMULDQrm", @@ -1916,8 +1910,6 @@ def: InstRW<[SKLWriteResGroup147], (instregex "VCVTDQ2PSYrm", "VCVTPS2DQYrm", "VCVTPS2PDYrm", "VCVTTPS2DQYrm", - "VMULPDYrm", - "VMULPSYrm", "VPMADDUBSWYrm", "VPMADDWDYrm", "VPMULDQYrm", |

