summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM
diff options
context:
space:
mode:
authorSjoerd Meijer <sjoerd.meijer@arm.com>2018-10-17 07:26:35 +0000
committerSjoerd Meijer <sjoerd.meijer@arm.com>2018-10-17 07:26:35 +0000
commitff3ab33ec89042ed93bc8488b6c6971a1b4a9cf1 (patch)
treebbbc3869f9ff6d1e6e1b71eb1f91751975e67387 /llvm/test/CodeGen/ARM
parente85af163bcb54f7510f2bd582f749f0d1505ff9b (diff)
downloadbcm5719-llvm-ff3ab33ec89042ed93bc8488b6c6971a1b4a9cf1.tar.gz
bcm5719-llvm-ff3ab33ec89042ed93bc8488b6c6971a1b4a9cf1.zip
[ARM][NFCI] Do not fuse VADD and VMUL, continued (1/2)
This is a follow up of rL342874, which stopped fusing muls and adds into VMLAs for performance reasons on the Cortex-M4 and Cortex-M33. This is a serie of 2 patches, that is trying to achieve the same for VFMA. The second column in the table below shows what we were generating before rL342874, the third column what changed with rL342874, and the last column what we want to achieve with these 2 patches: -------------------------------------------------------- | Opt | < rL342874 | >= rL342874 | | |------------------------------------------------------| |-O3 | vmla | vmul | vmul | | | | vadd | vadd | |------------------------------------------------------| |-Ofast | vfma | vfma | vmul | | | | | vadd | |------------------------------------------------------| |-Oz | vmla | vmla | vmla | -------------------------------------------------------- This patch 1/2, is a cleanup of the spaghetti predicate logic on the different VMLA and VFMA codegen rules, so that we can make the final functional change in patch 2/2. This also fixes a typo in the regression test added in rL342874. Differential revision: https://reviews.llvm.org/D53314 llvm-svn: 344671
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r--llvm/test/CodeGen/ARM/fmacs.ll7
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/test/CodeGen/ARM/fmacs.ll b/llvm/test/CodeGen/ARM/fmacs.ll
index 027991ef2c9..140ab933d0c 100644
--- a/llvm/test/CodeGen/ARM/fmacs.ll
+++ b/llvm/test/CodeGen/ARM/fmacs.ll
@@ -27,10 +27,11 @@ entry:
ret float %1
}
-define float @vlma_minsize(float %acc, float %a, float %b) #0 {
+define float @vmla_minsize(float %acc, float %a, float %b) #0 {
entry:
-; VMLA-LABEL: vlma_minsize:
-; VLMA: vmla.f32 s0, s1, s2
+; VMLA-LABEL: vmla_minsize:
+; VMLA: vmla.f32 s0, s1, s2
+; VMLA-NEXT: bx lr
%0 = fmul float %a, %b
%1 = fadd float %acc, %0
OpenPOWER on IntegriCloud