diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-10-03 10:28:43 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2018-10-03 10:28:43 +0000 |
| commit | c68cc4efbe5f8ad49dbd4d5080a9a5fb1720013b (patch) | |
| tree | 28f0da07cd834cf0f96cd114fcb1bd5c638b93f0 /llvm/lib | |
| parent | d11015861c370105d05931c7cfecbf35e6da26e8 (diff) | |
| download | bcm5719-llvm-c68cc4efbe5f8ad49dbd4d5080a9a5fb1720013b.tar.gz bcm5719-llvm-c68cc4efbe5f8ad49dbd4d5080a9a5fb1720013b.zip | |
[X86][Btver2] Most RMW instructions don't require an additional uop
Remove uop on WriteRMW and move it into the few instructions that need it.
Match AMD Fam16h SOG + llvm-exegesis tests
llvm-svn: 343671
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86ScheduleBtVer2.td | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86ScheduleBtVer2.td b/llvm/lib/Target/X86/X86ScheduleBtVer2.td index 3d73e38efb6..b807fa58b55 100644 --- a/llvm/lib/Target/X86/X86ScheduleBtVer2.td +++ b/llvm/lib/Target/X86/X86ScheduleBtVer2.td @@ -158,8 +158,9 @@ multiclass JWriteResYMMPair<X86FoldableSchedWrite SchedRW, } } -// A folded store needs a cycle on the SAGU for the store data. -def : WriteRes<WriteRMW, [JSAGU]>; +// A folded store needs a cycle on the SAGU for the store data, +// most RMW instructions don't need an extra uop. +defm : X86WriteRes<WriteRMW, [JSAGU], 1, [1], 0>; //////////////////////////////////////////////////////////////////////////////// // Arithmetic. @@ -208,8 +209,8 @@ defm : X86WriteRes<WriteBitTest, [JALU01], 1, [1], 1>; defm : X86WriteRes<WriteBitTestImmLd, [JALU01,JLAGU], 4, [1,1], 1>; defm : X86WriteRes<WriteBitTestRegLd, [JALU01,JLAGU], 4, [1,1], 5>; defm : X86WriteRes<WriteBitTestSet, [JALU01], 1, [1], 2>; -defm : X86WriteRes<WriteBitTestSetImmLd, [JALU01,JLAGU], 4, [1,1], 3>; -defm : X86WriteRes<WriteBitTestSetRegLd, [JALU01,JLAGU], 4, [1,1], 7>; +defm : X86WriteRes<WriteBitTestSetImmLd, [JALU01,JLAGU], 4, [1,1], 4>; +defm : X86WriteRes<WriteBitTestSetRegLd, [JALU01,JLAGU], 4, [1,1], 8>; // This is for simple LEAs with one or two input operands. def : WriteRes<WriteLEA, [JALU01]>; |

