diff options
author | Vasileios Kalintiris <Vasileios.Kalintiris@imgtec.com> | 2016-10-18 13:05:42 +0000 |
---|---|---|
committer | Vasileios Kalintiris <Vasileios.Kalintiris@imgtec.com> | 2016-10-18 13:05:42 +0000 |
commit | 3955b75ba9c2f5888d2e3113ebf9d72d97f047eb (patch) | |
tree | 301800fc1bbdbbfd4d8ae65eae09ad59d691d4b3 /llvm/test/CodeGen | |
parent | 9f578ceed72734025803c54c30aae4c3669fbb9e (diff) | |
download | bcm5719-llvm-3955b75ba9c2f5888d2e3113ebf9d72d97f047eb.tar.gz bcm5719-llvm-3955b75ba9c2f5888d2e3113ebf9d72d97f047eb.zip |
[mips][FastISel] Instantiate the MipsFastISel class only for targets that support FastISel.
Summary:
Instead of instantiating the MipsFastISel class and checking if the
target is supported in the overriden methods, we should perform that
check before creating the class. This allows us to enable FastISel *only*
for targets that truly support it, ie. MIPS32 to MIPS32R5.
Reviewers: sdardis
Subscribers: ehostunreach, llvm-commits
Differential Revision: https://reviews.llvm.org/D24824
llvm-svn: 284475
Diffstat (limited to 'llvm/test/CodeGen')
3 files changed, 33 insertions, 5 deletions
diff --git a/llvm/test/CodeGen/Mips/Fast-ISel/check-disabled-mcpus.ll b/llvm/test/CodeGen/Mips/Fast-ISel/check-disabled-mcpus.ll index 290e4ecb740..5594de8177d 100644 --- a/llvm/test/CodeGen/Mips/Fast-ISel/check-disabled-mcpus.ll +++ b/llvm/test/CodeGen/Mips/Fast-ISel/check-disabled-mcpus.ll @@ -1,3 +1,4 @@ +; Targets where we should not enable FastISel. ; RUN: llc -march=mips -mcpu=mips2 -O0 -relocation-model=pic \ ; RUN: -fast-isel-verbose <%s 2>&1 | FileCheck %s ; RUN: llc -march=mips -mcpu=mips3 -O0 -relocation-model=pic -target-abi n64 \ @@ -7,8 +8,16 @@ ; RUN: llc -march=mips -mcpu=mips32r6 -O0 -relocation-model=pic \ ; RUN: -fast-isel-verbose <%s 2>&1 | FileCheck %s + +; RUN: llc -march=mips -mattr=mips16 -O0 -relocation-model=pic \ +; RUN: -fast-isel-verbose <%s 2>&1 | FileCheck %s + ; RUN: llc -march=mips -mcpu=mips32r2 -mattr=+micromips -O0 -relocation-model=pic \ ; RUN: -fast-isel-verbose <%s 2>&1 | FileCheck %s +; RUN: llc -march=mips -mcpu=mips32r3 -mattr=+micromips -O0 -relocation-model=pic \ +; RUN: -fast-isel-verbose <%s 2>&1 | FileCheck %s +; RUN: llc -march=mips -mcpu=mips32r5 -mattr=+micromips -O0 -relocation-model=pic \ +; RUN: -fast-isel-verbose <%s 2>&1 | FileCheck %s ; RUN: llc -march=mips -mcpu=mips64 -O0 -relocation-model=pic -target-abi n64 \ ; RUN: -fast-isel-verbose <%s 2>&1 | FileCheck %s @@ -21,9 +30,26 @@ ; RUN: llc -march=mips -mcpu=mips32r6 -O0 -relocation-model=pic \ ; RUN: -fast-isel-verbose <%s 2>&1 | FileCheck %s -; CHECK: FastISel missed terminator: ret i32 0 +; Valid targets for FastISel. +; RUN: llc -march=mips -mcpu=mips32r0 -O0 -relocation-model=pic \ +; RUN: -fast-isel-verbose <%s 2>&1 | FileCheck %s -check-prefix=FISEL +; RUN: llc -march=mips -mcpu=mips32r2 -O0 -relocation-model=pic \ +; RUN: -fast-isel-verbose <%s 2>&1 | FileCheck %s -check-prefix=FISEL + +; The CHECK prefix is being used by those targets that do not support FastISel. +; By checking that we don't emit the "FastISel missed terminator..." message, +; we ensure that we do not generate code through FastISel. + +; CHECK-NOT: FastISel missed terminator: ret i64 0 + +; The above CHECK will only be valid as long as we *do* emit the missed +; terminator message for targets that support FastISel. If we add support +; for i64 return values in the future, then the following FISEL check-prefix +; will fail and we will have to come up with a new test. + +; FISEL: FastISel missed terminator: ret i64 0 -define i32 @foo() { +define i64 @foo() { entry: - ret i32 0 + ret i64 0 } diff --git a/llvm/test/CodeGen/Mips/Fast-ISel/double-arg.ll b/llvm/test/CodeGen/Mips/Fast-ISel/double-arg.ll index ee77d43d2b0..eb592189e60 100644 --- a/llvm/test/CodeGen/Mips/Fast-ISel/double-arg.ll +++ b/llvm/test/CodeGen/Mips/Fast-ISel/double-arg.ll @@ -1,5 +1,5 @@ -; RUN: not llc -march=mipsel -mcpu=mips32r2 -fast-isel -mattr=+fp64 < %s \ -; RUN: -fast-isel-abort=3 +; RUN: not llc -march=mipsel -mcpu=mips32r2 -mattr=+fp64 \ +; RUN: -O0 -relocation-model=pic -fast-isel-abort=3 < %s ; Check that FastISel aborts when we have 64bit FPU registers. FastISel currently ; supports AFGR64 only, which uses paired 32 bit registers. diff --git a/llvm/test/CodeGen/Mips/tailcall/tail-call-arguments-clobber.ll b/llvm/test/CodeGen/Mips/tailcall/tail-call-arguments-clobber.ll index f47adb6fbb2..b891b7d9072 100644 --- a/llvm/test/CodeGen/Mips/tailcall/tail-call-arguments-clobber.ll +++ b/llvm/test/CodeGen/Mips/tailcall/tail-call-arguments-clobber.ll @@ -21,6 +21,7 @@ declare i32 @func2(i32, i32, i32, i32, i32, i32) define i32 @func1(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f){ +; MIPS32-LABEL: func1: ; MIPS32: lw ${{[0-9]+}}, {{[0-9]+}}($sp) ; MIPS32-NEXT: lw ${{[0-9]+}}, {{[0-9]+}}($sp) @@ -40,6 +41,7 @@ declare i64 @func4(i64, i64, i64, i64, i64, i64, i64, i64, i64, i64) define i64 @func3(i64 %a, i64 %b, i64 %c, i64 %d, i64 %e, i64 %f, i64 %g, i64 %h, i64 %i, i64 %j){ +; MIPS64-LABEL: func3: ; MIPS64: ld ${{[0-9]+}}, {{[0-9]+}}($sp) ; MIPS64-NEXT: ld ${{[0-9]+}}, {{[0-9]+}}($sp) |