summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorSjoerd Meijer <sjoerd.meijer@arm.com>2018-10-17 10:05:44 +0000
committerSjoerd Meijer <sjoerd.meijer@arm.com>2018-10-17 10:05:44 +0000
commit64cfb74a61e097e64bc393008f44be53f942110e (patch)
treedbfd355945dfe3923309fe1ab6bd366913daf733 /llvm/lib/Target
parent7c8f91aa60600ffe3df9f6583432fa2cc38c5144 (diff)
downloadbcm5719-llvm-64cfb74a61e097e64bc393008f44be53f942110e.tar.gz
bcm5719-llvm-64cfb74a61e097e64bc393008f44be53f942110e.zip
[ARM] Do not fuse VADD and VMUL, continued (2/2)
This is patch 2/2, following up on D53314, and is the functional change to prevent fusing mul + add sequences into VFMAs. Differential revision: https://reviews.llvm.org/D53315 llvm-svn: 344683
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/ARM/ARMInstrInfo.td6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td b/llvm/lib/Target/ARM/ARMInstrInfo.td
index 529446ce809..fc8ed95ce8b 100644
--- a/llvm/lib/Target/ARM/ARMInstrInfo.td
+++ b/llvm/lib/Target/ARM/ARMInstrInfo.td
@@ -365,12 +365,14 @@ let RecomputePerFunction = 1 in {
def UseMulOps : Predicate<"Subtarget->useMulOps()">;
// Prefer fused MAC for fp mul + add over fp VMLA / VMLS if they are available.
-// But only select them if more precision in FP computation is allowed.
+// But only select them if more precision in FP computation is allowed, and when
+// they are not slower than a mul + add sequence.
// Do not use them for Darwin platforms.
def UseFusedMAC : Predicate<"(TM.Options.AllowFPOpFusion =="
" FPOpFusion::Fast && "
" Subtarget->hasVFP4()) && "
- "!Subtarget->isTargetDarwin()">;
+ "!Subtarget->isTargetDarwin() &&"
+ "Subtarget->useFPVMLx()">;
def HasFastVGETLNi32 : Predicate<"!Subtarget->hasSlowVGETLNi32()">;
def HasSlowVGETLNi32 : Predicate<"Subtarget->hasSlowVGETLNi32()">;
OpenPOWER on IntegriCloud