]> granicus.if.org Git - llvm/commitdiff
[ARM][DAG] Revert Disable post-legalization store merge for ARM
authorNirav Dave <niravd@google.com>
Wed, 29 Nov 2017 18:06:13 +0000 (18:06 +0000)
committerNirav Dave <niravd@google.com>
Wed, 29 Nov 2017 18:06:13 +0000 (18:06 +0000)
Partially reverting enabling of post-legalization store merge
(r319036) for just ARM backend as it is causing incorrect code
in some Thumb2 cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319331 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMISelLowering.h
test/CodeGen/ARM/fp16-promote.ll

index a791e2ea233f25f679a9a560196de8072f83178d..01f101d5bd55aa602976f54d4ea935c08ca28f3c 100644 (file)
@@ -532,6 +532,9 @@ class VectorType;
     bool canCombineStoreAndExtract(Type *VectorTy, Value *Idx,
                                    unsigned &Cost) const override;
 
+    // Disable currently because of invalid merge.
+    bool mergeStoresAfterLegalization() const override { return false; }
+
     bool canMergeStoresTo(unsigned AddressSpace, EVT MemVT,
                           const SelectionDAG &DAG) const override {
       // Do not merge to larger than i32.
index da2a1df9522a90a2828c4e8b6748c94ab2e3ba28..257d99d119282564ffb0a9015d885d20c912435b 100644 (file)
@@ -817,37 +817,25 @@ define void @test_fmuladd(half* %p, half* %q, half* %r) #0 {
 
 ; CHECK-ALL-LABEL: test_insertelement:
 ; CHECK-ALL: sub sp, sp, #8
-
-; CHECK-VFP:   and     
-; CHECK-VFP:   mov     
-; CHECK-VFP:   ldrd    
-; CHECK-VFP:   orr     
-; CHECK-VFP:   ldrh    
-; CHECK-VFP:   stm     
-; CHECK-VFP:   strh    
-; CHECK-VFP:   ldm     
-; CHECK-VFP:   stm     
-
-; CHECK-NOVFP: ldrh
-; CHECK-NOVFP: ldrh
-; CHECK-NOVFP: ldrh
-; CHECK-NOVFP: ldrh
-; CHECK-NOVFP-DAG: strh
-; CHECK-NOVFP-DAG: strh
-; CHECK-NOVFP-DAG: mov
-; CHECK-NOVFP-DAG: ldrh
-; CHECK-NOVFP-DAG: orr
-; CHECK-NOVFP-DAG: strh
-; CHECK-NOVFP-DAG: strh
-; CHECK-NOVFP-DAG: strh
-; CHECK-NOVFP-DAG: ldrh
-; CHECK-NOVFP-DAG: ldrh
-; CHECK-NOVFP-DAG: ldrh
-; CHECK-NOVFP-DAG: strh
-; CHECK-NOVFP-DAG: strh
-; CHECK-NOVFP-DAG: strh
-; CHECK-NOVFP-DAG: strh
-
+; CHECK-ALL: ldrh
+; CHECK-ALL: ldrh
+; CHECK-ALL: ldrh
+; CHECK-ALL: ldrh
+; CHECK-ALL-DAG: strh
+; CHECK-ALL-DAG: strh
+; CHECK-ALL-DAG: mov
+; CHECK-ALL-DAG: ldrh
+; CHECK-ALL-DAG: orr
+; CHECK-ALL-DAG: strh
+; CHECK-ALL-DAG: strh
+; CHECK-ALL-DAG: strh
+; CHECK-ALL-DAG: ldrh
+; CHECK-ALL-DAG: ldrh
+; CHECK-ALL-DAG: ldrh
+; CHECK-ALL-DAG: strh
+; CHECK-ALL-DAG: strh
+; CHECK-ALL-DAG: strh
+; CHECK-ALL-DAG: strh
 ; CHECK-ALL: add sp, sp, #8
 define void @test_insertelement(half* %p, <4 x half>* %q, i32 %i) #0 {
   %a = load half, half* %p, align 2