diff options
author | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2018-10-17 07:26:35 +0000 |
---|---|---|
committer | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2018-10-17 07:26:35 +0000 |
commit | ff3ab33ec89042ed93bc8488b6c6971a1b4a9cf1 (patch) | |
tree | bbbc3869f9ff6d1e6e1b71eb1f91751975e67387 /llvm/test/CodeGen/ARM | |
parent | e85af163bcb54f7510f2bd582f749f0d1505ff9b (diff) | |
download | bcm5719-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.ll | 7 |
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 |