diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-05-07 16:34:26 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-05-07 16:34:26 +0000 |
commit | 763bf12085b430028bdf7b5be7a07e548f64c36a (patch) | |
tree | 9f8e3036907b30f6a3402b60ebe06c4bf8177e10 /llvm/lib | |
parent | 267ea72437a377d2b3d93fdae2d520f146565715 (diff) | |
download | bcm5719-llvm-763bf12085b430028bdf7b5be7a07e548f64c36a.tar.gz bcm5719-llvm-763bf12085b430028bdf7b5be7a07e548f64c36a.zip |
[X86][Znver1] Remove WriteFMul/WriteFRcp InstRW overrides/aliases.
Fixes x87 schedules to more closely match Agner - AMD doesn't tend to "special case" x87 instructions as much as Intel.
llvm-svn: 331645
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86ScheduleZnver1.td | 47 |
1 files changed, 3 insertions, 44 deletions
diff --git a/llvm/lib/Target/X86/X86ScheduleZnver1.td b/llvm/lib/Target/X86/X86ScheduleZnver1.td index 5c3408b93c0..c2325577962 100644 --- a/llvm/lib/Target/X86/X86ScheduleZnver1.td +++ b/llvm/lib/Target/X86/X86ScheduleZnver1.td @@ -223,14 +223,14 @@ defm : ZnWriteResFpuPair<WriteFShuffle, [ZnFPU12], 1>; defm : ZnWriteResFpuPair<WriteFShuffleY, [ZnFPU12], 1>; defm : ZnWriteResFpuPair<WriteFVarShuffle, [ZnFPU12], 1>; defm : ZnWriteResFpuPair<WriteFVarShuffleY,[ZnFPU12], 1>; -defm : ZnWriteResFpuPair<WriteFMul, [ZnFPU0], 5>; -defm : ZnWriteResFpuPair<WriteFMulY, [ZnFPU0], 5>; +defm : ZnWriteResFpuPair<WriteFMul, [ZnFPU01], 3, [1], 1, 7, 1>; +defm : ZnWriteResFpuPair<WriteFMulY, [ZnFPU01], 4, [1], 1, 7, 1>; defm : ZnWriteResFpuPair<WriteFMA, [ZnFPU03], 5>; defm : ZnWriteResFpuPair<WriteFMAX, [ZnFPU03], 5>; defm : ZnWriteResFpuPair<WriteFMAY, [ZnFPU03], 5>; defm : ZnWriteResFpuPair<WriteFRcp, [ZnFPU01], 5>; defm : ZnWriteResFpuPair<WriteFRcpX, [ZnFPU01], 5>; -//defm : ZnWriteResFpuPair<WriteFRcpY, [ZnFPU01], 5, [1], 1, 7, 1>; +defm : ZnWriteResFpuPair<WriteFRcpY, [ZnFPU01], 5, [1], 1, 7, 2>; //defm : ZnWriteResFpuPair<WriteFRsqrt, [ZnFPU02], 5>; defm : ZnWriteResFpuPair<WriteFRsqrtX, [ZnFPU01], 5, [1], 1, 7, 1>; //defm : ZnWriteResFpuPair<WriteFRsqrtY, [ZnFPU01], 5, [2], 2>; @@ -1460,32 +1460,6 @@ def : SchedAlias<WriteFHAddLd, ZnWriteMicrocoded>; def : SchedAlias<WriteFHAddY, ZnWriteMicrocoded>; def : SchedAlias<WriteFHAddYLd, ZnWriteMicrocoded>; -// MULL SS/SD PS/PD. -// x,x / v,v,v. -def ZnWriteMULr : SchedWriteRes<[ZnFPU01]> { - let Latency = 3; -} -// ymm. -def ZnWriteMULYr : SchedWriteRes<[ZnFPU01]> { - let Latency = 4; -} -def : InstRW<[ZnWriteMULr], (instregex "(V?)MUL(P|S)(S|D)rr")>; -def : InstRW<[ZnWriteMULYr], (instregex "(V?)MUL(P|S)(S|D)Yrr")>; - -// x,m / v,v,m. -def ZnWriteMULLd : SchedWriteRes<[ZnAGU, ZnFPU01]> { - let Latency = 10; - let NumMicroOps = 2; -} -def : InstRW<[ZnWriteMULLd], (instregex "(V?)MUL(P|S)(S|D)rm")>; - -// ymm -def ZnWriteMULYLd : SchedWriteRes<[ZnAGU, ZnFPU01]> { - let Latency = 11; - let NumMicroOps = 2; -} -def : InstRW<[ZnWriteMULYLd], (instregex "(V?)MUL(P|S)(S|D)Yrm")>; - // VDIVPS. // TODO - convert to ZnWriteResFpuPair // y,y,y. @@ -1520,21 +1494,6 @@ def ZnWriteVDIVPDYLd : SchedWriteRes<[ZnAGU, ZnFPU3]> { } def : SchedAlias<WriteFDiv64YLd, ZnWriteVDIVPDYLd>; -// VRCPPS. -// TODO - convert to ZnWriteResFpuPair -// y,y. -def ZnWriteVRCPPSYr : SchedWriteRes<[ZnFPU01]> { - let Latency = 5; -} -def : SchedAlias<WriteFRcpY, ZnWriteVRCPPSYr>; - -// y,m256. -def ZnWriteVRCPPSYLd : SchedWriteRes<[ZnAGU, ZnFPU01]> { - let Latency = 12; - let NumMicroOps = 3; -} -def : SchedAlias<WriteFRcpYLd, ZnWriteVRCPPSYLd>; - // DPPS. // x,x,i / v,v,v,i. def : SchedAlias<WriteDPPS, ZnWriteMicrocoded>; |