[ARM64-BE] Fix fast-isel, and add appropriate RUN lines to appropriate tests.
authorJames Molloy <james.molloy@arm.com>
Wed, 7 May 2014 12:33:55 +0000 (12:33 +0000)
committerJames Molloy <james.molloy@arm.com>
Wed, 7 May 2014 12:33:55 +0000 (12:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208200 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM64/ARM64FastISel.cpp
test/CodeGen/ARM64/big-endian-bitconverts.ll
test/CodeGen/ARM64/big-endian-vector-callee.ll
test/CodeGen/ARM64/big-endian-vector-caller.ll

index 1af507390990844f9382f4120a972504ff982869..78cde1c22c99ec1801382b7cc1c93df4db8c91b6 100644 (file)
@@ -1593,6 +1593,11 @@ bool ARM64FastISel::SelectRet(const Instruction *I) {
     EVT RVEVT = TLI.getValueType(RV->getType());
     if (!RVEVT.isSimple())
       return false;
+
+    // Vectors (of > 1 lane) in big endian need tricky handling.
+    if (RVEVT.isVector() && RVEVT.getVectorNumElements() > 1)
+      return false;
+
     MVT RVVT = RVEVT.getSimpleVT();
     if (RVVT == MVT::f128)
       return false;
index 51ea42611c20ab8a4da0e0a16e475715cf5e9a7c..cb8708b9267c95b2f41470f8fd237451ccf611cc 100644 (file)
@@ -1,4 +1,5 @@
-; RUN: llc -mtriple arm64_be < %s -arm64-load-store-opt=false -o - | FileCheck %s
+; RUN: llc -mtriple arm64_be < %s -arm64-load-store-opt=false -O1 -o - | FileCheck %s
+; RUN: llc -mtriple arm64_be < %s -arm64-load-store-opt=false -O0 -fast-isel=true -o - | FileCheck %s
 
 ; CHECK-LABEL: test_i64_f64:
 define void @test_i64_f64(double* %p, i64* %q) {
index 9416f07a3cb64ec5a73cb8bab7ef86a4dc27b966..5b9ccace8821a4e4419596cb9191245e02469753 100644 (file)
@@ -1,4 +1,5 @@
 ; RUN: llc -mtriple arm64_be < %s -arm64-load-store-opt=false -o - | FileCheck %s
+; RUN: llc -mtriple arm64_be < %s -fast-isel=true -arm64-load-store-opt=false -o - | FileCheck %s
 
 ; CHECK-LABEL: test_i64_f64:
 define i64 @test_i64_f64(double %p) {
index 917e64aae52e9180efe58c63ba5dec1e4fc981a4..194a3213925353323f2f5088ab2f26c8ac7cefbe 100644 (file)
@@ -1,4 +1,5 @@
 ; RUN: llc -mtriple arm64_be < %s -arm64-load-store-opt=false -o - | FileCheck %s
+; RUN: llc -mtriple arm64_be < %s -arm64-load-store-opt=false -fast-isel=true -O0 -o - | FileCheck %s
 
 ; CHECK-LABEL: test_i64_f64:
 declare i64 @test_i64_f64_helper(double %p)