summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2018-10-03 10:28:43 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2018-10-03 10:28:43 +0000
commitc68cc4efbe5f8ad49dbd4d5080a9a5fb1720013b (patch)
tree28f0da07cd834cf0f96cd114fcb1bd5c638b93f0 /llvm/lib
parentd11015861c370105d05931c7cfecbf35e6da26e8 (diff)
downloadbcm5719-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.td9
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]>;
OpenPOWER on IntegriCloud