[ARM][AArch64] Turn on by default interleaved access lowering
authorSilviu Baranga <silviu.baranga@arm.com>
Tue, 1 Sep 2015 11:12:35 +0000 (11:12 +0000)
committerSilviu Baranga <silviu.baranga@arm.com>
Tue, 1 Sep 2015 11:12:35 +0000 (11:12 +0000)
Summary:
Interleaved access lowering removes a memory operation and a
sequence of vector shuffles and replaces it with a series of
memory operations. This should be always beneficial.

This pass in only enabled on ARM/AArch64.

Reviewers: rengolin

Subscribers: aemerson, llvm-commits, rengolin

Differential Revision: http://reviews.llvm.org/D12145

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

lib/CodeGen/InterleavedAccessPass.cpp
test/CodeGen/ARM/vext.ll
test/CodeGen/ARM/vpadd.ll

index baacf1ad9e17e5b8b0cf32bbd415c1b6bb4b8e8e..724f1d61abe248a63af579ed86967bc73b19e27e 100644 (file)
@@ -52,7 +52,7 @@ using namespace llvm;
 static cl::opt<bool> LowerInterleavedAccesses(
     "lower-interleaved-accesses",
     cl::desc("Enable lowering interleaved accesses to intrinsics"),
-    cl::init(false), cl::Hidden);
+    cl::init(true), cl::Hidden);
 
 static unsigned MaxFactor; // The maximum supported interleave factor.
 
index 61342022ad50f2e2d47943421944ded884cf52ba..394ecfb281fc3bc6f2396bad5af9d188a45626b6 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -mtriple=arm-eabi -mattr=+neon %s -o - | FileCheck %s
+; RUN: llc -mtriple=arm-eabi -mattr=+neon %s -o - -lower-interleaved-accesses=false | FileCheck %s
 
 define <8 x i8> @test_vextd(<8 x i8>* %A, <8 x i8>* %B) nounwind {
 ;CHECK-LABEL: test_vextd:
index e362ce36f8ba1dbd4879fc0d39c94aa135efa902..6ddf9850cfcb04ff58177098a17d6973e0c9b84a 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc -mtriple=arm-eabi -mattr=+neon %s -o - | FileCheck %s
+; RUN: llc -mtriple=arm-eabi -mattr=+neon %s -o - -lower-interleaved-accesses=false | FileCheck %s
 
 define <8 x i8> @vpaddi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
 ;CHECK-LABEL: vpaddi8: