diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-04-23 16:10:50 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-04-23 16:10:50 +0000 |
| commit | 8cd01aaa0f84a5fc9b95f2061bab0ab1ab543d47 (patch) | |
| tree | 240883845e288fbadb86d369a6fb9e01abaed39f /llvm/lib/Target | |
| parent | bbe980dfe12d939624ae7c91c9c4bc3a585de75d (diff) | |
| download | bcm5719-llvm-8cd01aaa0f84a5fc9b95f2061bab0ab1ab543d47.tar.gz bcm5719-llvm-8cd01aaa0f84a5fc9b95f2061bab0ab1ab543d47.zip | |
[X86] Replace x87 instregex with instrs if they only match one instruction
llvm-svn: 330611
Diffstat (limited to 'llvm/lib/Target')
| -rwxr-xr-x | llvm/lib/Target/X86/X86SchedBroadwell.td | 9 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86SchedHaswell.td | 19 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86SchedSandyBridge.td | 8 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86SchedSkylakeClient.td | 13 | ||||
| -rwxr-xr-x | llvm/lib/Target/X86/X86SchedSkylakeServer.td | 13 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86ScheduleZnver1.td | 18 |
6 files changed, 37 insertions, 43 deletions
diff --git a/llvm/lib/Target/X86/X86SchedBroadwell.td b/llvm/lib/Target/X86/X86SchedBroadwell.td index 15ffc8fa937..934a545c079 100755 --- a/llvm/lib/Target/X86/X86SchedBroadwell.td +++ b/llvm/lib/Target/X86/X86SchedBroadwell.td @@ -368,8 +368,7 @@ def BWWriteResGroup5 : SchedWriteRes<[BWPort01]> { let NumMicroOps = 1; let ResourceCycles = [1]; } -def: InstRW<[BWWriteResGroup5], (instregex "FINCSTP", - "FNOP")>; +def: InstRW<[BWWriteResGroup5], (instrs FINCSTP, FNOP)>; def BWWriteResGroup6 : SchedWriteRes<[BWPort06]> { let Latency = 1; @@ -480,7 +479,7 @@ def BWWriteResGroup12 : SchedWriteRes<[BWPort01]> { let NumMicroOps = 2; let ResourceCycles = [2]; } -def: InstRW<[BWWriteResGroup12], (instregex "FDECSTP")>; +def: InstRW<[BWWriteResGroup12], (instrs FDECSTP)>; def BWWriteResGroup13 : SchedWriteRes<[BWPort06]> { let Latency = 2; @@ -824,7 +823,7 @@ def BWWriteResGroup45 : SchedWriteRes<[BWPort0156]> { let NumMicroOps = 4; let ResourceCycles = [4]; } -def: InstRW<[BWWriteResGroup45], (instregex "FNCLEX")>; +def: InstRW<[BWWriteResGroup45], (instrs FNCLEX)>; def BWWriteResGroup46 : SchedWriteRes<[BWPort015,BWPort0156]> { let Latency = 4; @@ -2275,7 +2274,7 @@ def BWWriteResGroup200 : SchedWriteRes<[BWPort5,BWPort01,BWPort0156]> { let NumMicroOps = 15; let ResourceCycles = [6,3,6]; } -def: InstRW<[BWWriteResGroup200], (instregex "FNINIT")>; +def: InstRW<[BWWriteResGroup200], (instrs FNINIT)>; def BWWriteResGroup201 : SchedWriteRes<[BWPort0,BWPort1,BWPort5,BWPort6,BWPort01,BWPort0156]> { let Latency = 80; diff --git a/llvm/lib/Target/X86/X86SchedHaswell.td b/llvm/lib/Target/X86/X86SchedHaswell.td index 4f09cfeb84c..80a626ce688 100644 --- a/llvm/lib/Target/X86/X86SchedHaswell.td +++ b/llvm/lib/Target/X86/X86SchedHaswell.td @@ -513,7 +513,7 @@ def : InstRW<[HWWrite3P01], (instregex "COM_FIr", "COM_FIPr", "UCOM_FIr", def : InstRW<[HWWriteP1], (instregex "TST_F")>; // FXAM. -def : InstRW<[HWWrite2P1], (instregex "FXAM")>; +def : InstRW<[HWWrite2P1], (instrs FXAM)>; // FPREM. def HWWriteFPREM : SchedWriteRes<[]> { @@ -534,7 +534,7 @@ def HWWriteFRNDINT : SchedWriteRes<[]> { let Latency = 11; let NumMicroOps = 17; } -def : InstRW<[HWWriteFRNDINT], (instregex "FRNDINT")>; +def : InstRW<[HWWriteFRNDINT], (instrs FRNDINT)>; //-- Math instructions --// @@ -543,14 +543,14 @@ def HWWriteFSCALE : SchedWriteRes<[]> { let Latency = 75; // 49-125 let NumMicroOps = 50; // 25-75 } -def : InstRW<[HWWriteFSCALE], (instregex "FSCALE")>; +def : InstRW<[HWWriteFSCALE], (instrs FSCALE)>; // FXTRACT. def HWWriteFXTRACT : SchedWriteRes<[]> { let Latency = 15; let NumMicroOps = 17; } -def : InstRW<[HWWriteFXTRACT], (instregex "FXTRACT")>; +def : InstRW<[HWWriteFXTRACT], (instrs FXTRACT)>; //////////////////////////////////////////////////////////////////////////////// // Horizontal add/sub instructions. @@ -710,8 +710,7 @@ def HWWriteResGroup6 : SchedWriteRes<[HWPort01]> { let NumMicroOps = 1; let ResourceCycles = [1]; } -def: InstRW<[HWWriteResGroup6], (instregex "FINCSTP", - "FNOP")>; +def: InstRW<[HWWriteResGroup6], (instrs FINCSTP, FNOP)>; def HWWriteResGroup7 : SchedWriteRes<[HWPort06]> { let Latency = 1; @@ -1204,7 +1203,7 @@ def HWWriteResGroup28 : SchedWriteRes<[HWPort01]> { let NumMicroOps = 2; let ResourceCycles = [2]; } -def: InstRW<[HWWriteResGroup28], (instregex "FDECSTP")>; +def: InstRW<[HWWriteResGroup28], (instrs FDECSTP)>; def HWWriteResGroup29 : SchedWriteRes<[HWPort06]> { let Latency = 2; @@ -1223,7 +1222,7 @@ def HWWriteResGroup30 : SchedWriteRes<[HWPort0156]> { } def: InstRW<[HWWriteResGroup30], (instregex "LFENCE")>; def: InstRW<[HWWriteResGroup30], (instregex "MFENCE")>; -def: InstRW<[HWWriteResGroup30], (instregex "WAIT")>; +def: InstRW<[HWWriteResGroup30], (instrs WAIT)>; def: InstRW<[HWWriteResGroup30], (instregex "XGETBV")>; def HWWriteResGroup31 : SchedWriteRes<[HWPort0,HWPort5]> { @@ -1845,7 +1844,7 @@ def HWWriteResGroup81 : SchedWriteRes<[HWPort0156]> { let NumMicroOps = 4; let ResourceCycles = [4]; } -def: InstRW<[HWWriteResGroup81], (instregex "FNCLEX")>; +def: InstRW<[HWWriteResGroup81], (instrs FNCLEX)>; def HWWriteResGroup82 : SchedWriteRes<[HWPort015,HWPort0156]> { let Latency = 4; @@ -2572,7 +2571,7 @@ def HWWriteResGroup180 : SchedWriteRes<[HWPort5,HWPort01,HWPort0156]> { let NumMicroOps = 15; let ResourceCycles = [6,3,6]; } -def: InstRW<[HWWriteResGroup180], (instregex "FNINIT")>; +def: InstRW<[HWWriteResGroup180], (instrs FNINIT)>; def HWWriteResGroup181 : SchedWriteRes<[HWPort0,HWPort1,HWPort5,HWPort6,HWPort01,HWPort0156]> { let Latency = 98; diff --git a/llvm/lib/Target/X86/X86SchedSandyBridge.td b/llvm/lib/Target/X86/X86SchedSandyBridge.td index d4214b75bd1..bc9ec5765e8 100644 --- a/llvm/lib/Target/X86/X86SchedSandyBridge.td +++ b/llvm/lib/Target/X86/X86SchedSandyBridge.td @@ -328,11 +328,9 @@ def SBWriteResGroup2 : SchedWriteRes<[SBPort5]> { let NumMicroOps = 1; let ResourceCycles = [1]; } +def: InstRW<[SBWriteResGroup2], (instrs FDECSTP, FINCSTP, FNOP)>; def: InstRW<[SBWriteResGroup2], (instrs LOOP, LOOPE, LOOPNE)>; // FIXME: This seems wrong compared to other Intel CPUs. -def: InstRW<[SBWriteResGroup2], (instregex "FDECSTP", - "FFREE", - "FINCSTP", - "FNOP", +def: InstRW<[SBWriteResGroup2], (instregex "FFREE", "LD_Frr", "RETQ", "ST_FPrr", @@ -826,7 +824,7 @@ def SBWriteResGroup41 : SchedWriteRes<[SBPort5,SBPort015]> { let NumMicroOps = 4; let ResourceCycles = [1,3]; } -def: InstRW<[SBWriteResGroup41], (instregex "FNINIT")>; +def: InstRW<[SBWriteResGroup41], (instrs FNINIT)>; def SBWriteResGroup42 : SchedWriteRes<[SBPort05,SBPort015]> { let Latency = 5; diff --git a/llvm/lib/Target/X86/X86SchedSkylakeClient.td b/llvm/lib/Target/X86/X86SchedSkylakeClient.td index ce272b26465..1665527f7c6 100644 --- a/llvm/lib/Target/X86/X86SchedSkylakeClient.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeClient.td @@ -433,9 +433,8 @@ def SKLWriteResGroup6 : SchedWriteRes<[SKLPort05]> { let NumMicroOps = 1; let ResourceCycles = [1]; } -def: InstRW<[SKLWriteResGroup6], (instregex "FINCSTP", - "FNOP", - "MMX_MOVQ64rr", +def: InstRW<[SKLWriteResGroup6], (instrs FINCSTP, FNOP)>; +def: InstRW<[SKLWriteResGroup6], (instregex "MMX_MOVQ64rr", "MMX_PABS(B|D|W)rr", "MMX_PADD(B|D|Q|W)irr", "MMX_PANDNirr", @@ -589,8 +588,8 @@ def SKLWriteResGroup14 : SchedWriteRes<[SKLPort05]> { let NumMicroOps = 2; let ResourceCycles = [2]; } -def: InstRW<[SKLWriteResGroup14], (instregex "FDECSTP", - "MMX_MOVDQ2Qrr")>; +def: InstRW<[SKLWriteResGroup14], (instrs FDECSTP)>; +def: InstRW<[SKLWriteResGroup14], (instregex "MMX_MOVDQ2Qrr")>; def SKLWriteResGroup15 : SchedWriteRes<[SKLPort06]> { let Latency = 2; @@ -990,7 +989,7 @@ def SKLWriteResGroup54 : SchedWriteRes<[SKLPort0156]> { let NumMicroOps = 4; let ResourceCycles = [4]; } -def: InstRW<[SKLWriteResGroup54], (instregex "FNCLEX")>; +def: InstRW<[SKLWriteResGroup54], (instrs FNCLEX)>; def SKLWriteResGroup55 : SchedWriteRes<[SKLPort6,SKLPort0156]> { let Latency = 4; @@ -2581,7 +2580,7 @@ def SKLWriteResGroup220 : SchedWriteRes<[SKLPort5,SKLPort05,SKLPort0156]> { let NumMicroOps = 15; let ResourceCycles = [6,3,6]; } -def: InstRW<[SKLWriteResGroup220], (instregex "FNINIT")>; +def: InstRW<[SKLWriteResGroup220], (instrs FNINIT)>; def SKLWriteResGroup221 : SchedWriteRes<[SKLPort0,SKLPort1,SKLPort5,SKLPort6,SKLPort05,SKLPort0156]> { let Latency = 76; diff --git a/llvm/lib/Target/X86/X86SchedSkylakeServer.td b/llvm/lib/Target/X86/X86SchedSkylakeServer.td index 5e766088d7c..049edf638c3 100755 --- a/llvm/lib/Target/X86/X86SchedSkylakeServer.td +++ b/llvm/lib/Target/X86/X86SchedSkylakeServer.td @@ -738,9 +738,8 @@ def SKXWriteResGroup6 : SchedWriteRes<[SKXPort05]> { let NumMicroOps = 1; let ResourceCycles = [1]; } -def: InstRW<[SKXWriteResGroup6], (instregex "FINCSTP", - "FNOP", - "MMX_MOVQ64rr", +def: InstRW<[SKXWriteResGroup6], (instrs FINCSTP, FNOP)>; +def: InstRW<[SKXWriteResGroup6], (instregex "MMX_MOVQ64rr", "MMX_PABS(B|D|W)rr", "MMX_PADD(B|D|Q|W)irr", "MMX_PANDNirr", @@ -1061,8 +1060,8 @@ def SKXWriteResGroup14 : SchedWriteRes<[SKXPort05]> { let NumMicroOps = 2; let ResourceCycles = [2]; } -def: InstRW<[SKXWriteResGroup14], (instregex "FDECSTP", - "MMX_MOVDQ2Qrr")>; +def: InstRW<[SKXWriteResGroup14], (instrs FDECSTP)>; +def: InstRW<[SKXWriteResGroup14], (instregex "MMX_MOVDQ2Qrr")>; def SKXWriteResGroup15 : SchedWriteRes<[SKXPort06]> { let Latency = 2; @@ -1981,7 +1980,7 @@ def SKXWriteResGroup55 : SchedWriteRes<[SKXPort0156]> { let NumMicroOps = 4; let ResourceCycles = [4]; } -def: InstRW<[SKXWriteResGroup55], (instregex "FNCLEX")>; +def: InstRW<[SKXWriteResGroup55], (instrs FNCLEX)>; def SKXWriteResGroup56 : SchedWriteRes<[SKXPort015,SKXPort0156]> { let Latency = 4; @@ -5168,7 +5167,7 @@ def SKXWriteResGroup263 : SchedWriteRes<[SKXPort5,SKXPort05,SKXPort0156]> { let NumMicroOps = 15; let ResourceCycles = [6,3,6]; } -def: InstRW<[SKXWriteResGroup263], (instregex "FNINIT")>; +def: InstRW<[SKXWriteResGroup263], (instrs FNINIT)>; def SKXWriteResGroup264 : SchedWriteRes<[SKXPort0,SKXPort1,SKXPort5,SKXPort6,SKXPort05,SKXPort0156]> { let Latency = 76; diff --git a/llvm/lib/Target/X86/X86ScheduleZnver1.td b/llvm/lib/Target/X86/X86ScheduleZnver1.td index 1a2fcc4d79d..daf0dfffd49 100644 --- a/llvm/lib/Target/X86/X86ScheduleZnver1.td +++ b/llvm/lib/Target/X86/X86ScheduleZnver1.td @@ -763,7 +763,7 @@ def : InstRW<[WriteMicrocoded], (instregex "FLDCW16m")>; def : InstRW<[WriteMicrocoded], (instregex "FNSTCW16m")>; // FINCSTP FDECSTP. -def : InstRW<[ZnWriteFPU3], (instregex "FINCSTP", "FDECSTP")>; +def : InstRW<[ZnWriteFPU3], (instrs FINCSTP, FDECSTP)>; // FFREE. def : InstRW<[ZnWriteFPU3], (instregex "FFREE")>; @@ -822,7 +822,7 @@ def : InstRW<[ZnWriteFPU03], (instregex "FICOM(16|32)m", "FICOMP(16|32)m")>; def : InstRW<[ZnWriteFPU0Lat1], (instregex "TST_F")>; // FXAM. -def : InstRW<[ZnWriteFPU3Lat1], (instregex "FXAM")>; +def : InstRW<[ZnWriteFPU3Lat1], (instrs FXAM)>; // FPREM. def : InstRW<[WriteMicrocoded], (instrs FPREM)>; @@ -831,25 +831,25 @@ def : InstRW<[WriteMicrocoded], (instrs FPREM)>; def : InstRW<[WriteMicrocoded], (instrs FPREM1)>; // FRNDINT. -def : InstRW<[WriteMicrocoded], (instregex "FRNDINT")>; +def : InstRW<[WriteMicrocoded], (instrs FRNDINT)>; // FSCALE. -def : InstRW<[WriteMicrocoded], (instregex "FSCALE")>; +def : InstRW<[WriteMicrocoded], (instrs FSCALE)>; // FXTRACT. -def : InstRW<[WriteMicrocoded], (instregex "FXTRACT")>; +def : InstRW<[WriteMicrocoded], (instrs FXTRACT)>; // FNOP. -def : InstRW<[ZnWriteFPU0Lat1], (instregex "FNOP")>; +def : InstRW<[ZnWriteFPU0Lat1], (instrs FNOP)>; // WAIT. -def : InstRW<[ZnWriteFPU0Lat1], (instregex "WAIT")>; +def : InstRW<[ZnWriteFPU0Lat1], (instrs WAIT)>; // FNCLEX. -def : InstRW<[WriteMicrocoded], (instregex "FNCLEX")>; +def : InstRW<[WriteMicrocoded], (instrs FNCLEX)>; // FNINIT. -def : InstRW<[WriteMicrocoded], (instregex "FNINIT")>; +def : InstRW<[WriteMicrocoded], (instrs FNINIT)>; //=== Integer MMX and XMM Instructions ===// //-- Move instructions --// |

