summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/Thumb2/float-ops.ll
diff options
context:
space:
mode:
authorDavid Green <david.green@arm.com>2019-09-24 10:10:41 +0000
committerDavid Green <david.green@arm.com>2019-09-24 10:10:41 +0000
commit49d851f403a5e2c9344f15ce794e1f33f3f81f10 (patch)
tree1d8d0daf916e5dfc315cb29c36efa66d1d46878f /llvm/test/CodeGen/Thumb2/float-ops.ll
parent9379d19ff86cf5fb7931599ccac30bcf223badb9 (diff)
downloadbcm5719-llvm-49d851f403a5e2c9344f15ce794e1f33f3f81f10.tar.gz
bcm5719-llvm-49d851f403a5e2c9344f15ce794e1f33f3f81f10.zip
[ARM] Split large truncating MVE stores
MVE does not have a simple sign extend instruction that can move elements across lanes. We currently often end up moving each lane into and out of a GPR, in order to get elements into the correct places. When we have a store of a trunc (or a extend of a load), we can instead just split the store/load in two, using the narrowing/widening load/store instructions from each half of the vector. This does that for stores. It happens very early in a store combine, so as to easily detect the truncates. (It would be possible to do this later, but that would involve looking through a buildvector of extract elements. Not impossible but this way seemed simpler). By enabling store combines we also get a vmovdrr combine for free, helping some other tests. Differential Revision: https://reviews.llvm.org/D67828 llvm-svn: 372717
Diffstat (limited to 'llvm/test/CodeGen/Thumb2/float-ops.ll')
-rw-r--r--llvm/test/CodeGen/Thumb2/float-ops.ll2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/Thumb2/float-ops.ll b/llvm/test/CodeGen/Thumb2/float-ops.ll
index cbd8ca557a0..cc3684c2ec0 100644
--- a/llvm/test/CodeGen/Thumb2/float-ops.ll
+++ b/llvm/test/CodeGen/Thumb2/float-ops.ll
@@ -130,7 +130,7 @@ define void @store_d(double* %a, double %b) {
entry:
; CHECK-LABEL: store_d:
; NOREGS: strd r2, r3, [r0]
-; ONLYREGS: vstr d0, [r0]
+; ONLYREGS: strd r2, r3, [r0]
; HARD: vstr d0, [r0]
store double %b, double* %a, align 8
ret void
OpenPOWER on IntegriCloud