mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
6e6c156614
In the long-term, we want to replace statistics with something finer-grained that lets us gather per-function data. Remarks are that replacement. Create an ORE instance in SelectionDAGISel, and pass it to SelectionDAG. SelectionDAG was used so that we can emit remarks from all SelectionDAG-related code, including TargetLowering and DAGCombiner. This isn't used in the current patch but Adam tells me he's interested for the fp-contract combines. Use the ORE instance to emit FastISel failures as remarks (instead of the mix of dbgs() dumps and statistics that we currently have). Eventually, we want to have an API that tells us whether remarks are enabled (http://llvm.org/PR32352) so that we don't emit expensive remarks (in this case, dumping IR) when it's not needed. For now, use 'isEnabled' as a crude replacement. This does mean that the replacement for '-fast-isel-verbose' is now '-pass-remarks-missed=isel'. Additionally, clang users also need to enable remark diagnostics, using '-Rpass-missed=isel'. This also removes '-fast-isel-verbose2': there are no static statistics that we want to only enable in asserts builds, so we can always use the remarks regardless of the build type. Differential Revision: https://reviews.llvm.org/D31405 llvm-svn: 299093
56 lines
2.7 KiB
LLVM
56 lines
2.7 KiB
LLVM
; Targets where we should not enable FastISel.
|
|
; RUN: llc -march=mips -mcpu=mips2 -O0 -relocation-model=pic \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
; RUN: llc -march=mips -mcpu=mips3 -O0 -relocation-model=pic -target-abi n64 \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
; RUN: llc -march=mips -mcpu=mips4 -O0 -relocation-model=pic -target-abi n64 \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
|
|
; RUN: llc -march=mips -mcpu=mips32r6 -O0 -relocation-model=pic \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
|
|
; RUN: llc -march=mips -mattr=mips16 -O0 -relocation-model=pic \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
|
|
; RUN: llc -march=mips -mcpu=mips32r2 -mattr=+micromips -O0 -relocation-model=pic \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
; RUN: llc -march=mips -mcpu=mips32r3 -mattr=+micromips -O0 -relocation-model=pic \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
; RUN: llc -march=mips -mcpu=mips32r5 -mattr=+micromips -O0 -relocation-model=pic \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
|
|
; RUN: llc -march=mips -mcpu=mips64 -O0 -relocation-model=pic -target-abi n64 \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
; RUN: llc -march=mips -mcpu=mips64r2 -O0 -relocation-model=pic -target-abi n64 \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
; RUN: llc -march=mips -mcpu=mips64r3 -O0 -relocation-model=pic -target-abi n64 \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
; RUN: llc -march=mips -mcpu=mips64r5 -O0 -relocation-model=pic -target-abi n64 \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
; RUN: llc -march=mips -mcpu=mips32r6 -O0 -relocation-model=pic \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s
|
|
|
|
; Valid targets for FastISel.
|
|
; RUN: llc -march=mips -mcpu=mips32r0 -O0 -relocation-model=pic \
|
|
; RUN: -pass-remarks-missed=isel <%s 2>&1 | FileCheck %s -check-prefix=FISEL
|
|
; RUN: llc -march=mips -mcpu=mips32r2 -O0 -relocation-model=pic \
|
|
; RUN: -pass-remarks-missed=isel <%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 i64 @foo() {
|
|
entry:
|
|
ret i64 0
|
|
}
|