[llvm] r208200 - [ARM64-BE] Fix fast-isel, and add appropriate RUN lines to appropriate tests.

James Molloy james.molloy at arm.com
Wed May 7 05:33:55 PDT 2014


Author: jamesm
Date: Wed May  7 07:33:55 2014
New Revision: 208200

URL: http://llvm.org/viewvc/llvm-project?rev=208200&view=rev
Log:
[ARM64-BE] Fix fast-isel, and add appropriate RUN lines to appropriate tests.

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

Modified: llvm/trunk/lib/Target/ARM64/ARM64FastISel.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM64/ARM64FastISel.cpp?rev=208200&r1=208199&r2=208200&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM64/ARM64FastISel.cpp (original)
+++ llvm/trunk/lib/Target/ARM64/ARM64FastISel.cpp Wed May  7 07:33:55 2014
@@ -1593,6 +1593,11 @@ bool ARM64FastISel::SelectRet(const Inst
     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;

Modified: llvm/trunk/test/CodeGen/ARM64/big-endian-bitconverts.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM64/big-endian-bitconverts.ll?rev=208200&r1=208199&r2=208200&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/ARM64/big-endian-bitconverts.ll (original)
+++ llvm/trunk/test/CodeGen/ARM64/big-endian-bitconverts.ll Wed May  7 07:33:55 2014
@@ -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) {

Modified: llvm/trunk/test/CodeGen/ARM64/big-endian-vector-callee.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM64/big-endian-vector-callee.ll?rev=208200&r1=208199&r2=208200&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/ARM64/big-endian-vector-callee.ll (original)
+++ llvm/trunk/test/CodeGen/ARM64/big-endian-vector-callee.ll Wed May  7 07:33:55 2014
@@ -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) {

Modified: llvm/trunk/test/CodeGen/ARM64/big-endian-vector-caller.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM64/big-endian-vector-caller.ll?rev=208200&r1=208199&r2=208200&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/ARM64/big-endian-vector-caller.ll (original)
+++ llvm/trunk/test/CodeGen/ARM64/big-endian-vector-caller.ll Wed May  7 07:33:55 2014
@@ -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)





More information about the llvm-commits mailing list